2

我是zend框架和ajax的初学者我尝试用ajax和zend做一个简单的代码,当按下按钮时它包含一个div、文本和按钮文本的值被填充到div中但是当我按下按钮时什么也没发生:S这是我的代码,请帮助我

这是布局

/index/test.phtml


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"       type="text/javascript"></script>

<!--for display text and submit fields i use viewHelpers it's very comfortable  and       easy way.-->
<div class="submit_area">
  <?php echo $this->formText('message', 'empty', array('size' => 32, 'id' => 'message')) ?>
  <?php echo $this->formSubmit('submitTo', 'submit', array('id' => 'submitTo')) ?>
  <div class="show-msg"></div>
</div>

<script >
//for send data i'll use jquery library
$(document).ready( function() {
  <?php echo "ready" ?>
  //By clicking on button submit condition makes validate on empty message 
  //unless field message will be not empty  , the programm make send data to
  //controller via ajax
  $("#submitTo").click(function() {
    var message = $('#message').val();
    if (message != '') {
      //run ajax 
      $.post('index/ajax', {'message' : message},
        //callback function
        function (respond) {
          //put respond in class show-msg                          
          $(".show-msg").html(respond);                  
        }
      );
    }                    
  });
});
</script>

------------------------------------------

这是控制器中的代码


class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function checkAction()
    {
        // action body  
        $request = $this->getRequest()->getPost();

        //referring to the index
        //gets value from ajax request
        $message = $request['message'];

        // makes disable renderer
        $this->_helper->viewRenderer->setNoRender();

        //makes disable layout
        $this->_helper->getHelper('layout')->disableLayout();

        //return callback message to the function javascript
        echo $message; 
    }

    public function testAction()
    {
        // action body      
    }
}
4

2 回答 2

1

你有什么错误吗?

我可以在您的代码中看到几件事可能是错误的。

  1. click()事件不太return false可能在 Ajax 调用发生之前提交您的表单。

  2. Ajax URL 指向/index/ajax这意味着IndexController应该有一个ajaxAction. 您应该将post()请求指向/index/check.

您可能还想看看ContextSwitch 和 AjaxContext

事实上,@Boulevard 所说的也是正确的,这echo会破坏你的 JS。

于 2013-09-29T09:05:18.790 回答
0

您在 javascript 语法上的代码错误。尝试删除此行:

  <?php echo "ready" ?>

并添加 javascript 关闭标签:

</script>
于 2013-09-29T09:03:30.140 回答