在zend框架1.12中使用ajax

时间:2013-09-29 08:50:19

标签: php ajax zend-framework

我是zend框架和ajax的初学者 我尝试用ajax和zend做一个简单的代码, 当按下按钮时,它包含div,text和button,文本的值被填充到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      
    }
}

2 个答案:

答案 0 :(得分:1)

您收到任何错误吗?

我可以在代码中看到一些可能有误的内容。

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

  2. Ajax网址指向/index/ajax,这意味着IndexController应该有ajaxAction。您应该将post()请求指向/index/check

  3. 您可能还想查看ContextSwitch and AjaxContext

    确实@Boulevard所说的也是正确的,echo打破了你的JS。

答案 1 :(得分:0)

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

  <?php echo "ready" ?>

添加javascript关闭代码:

</script>