在Zend上使用Jquery.ajax而不是.load的问题

时间:2010-02-12 18:48:26

标签: php jquery ajax zend-framework

现在,我要做的是用一块html替换首页上的标签。现在,页面基本上有:

<label id="replace"></label>

js目前有:

$(document).ready(function(){
  $("#replace").load('/test');
});

Zend类函数有:

public function indexAction(){
  $this->_helper->layout()->disableLayout();  
  $this->_view->message = "This is from TestController index";
}

最后index.phtml模板只有:

<?php echo $this->message;?>

现在,我想更改代码,以便不使用相同的消息替换该标签,而是执行POST,其中函数将提取参数,执行某些操作(例如,转到数据库并使用POST参数拉出一些东西然后返回消息。

我尝试过编辑js,看起来像是:

$.post('/test', {param : "test_param"},
function(data) {$("#replace").html(data);});

$.ajax({
  type: 'POST',
  url: '/test',
  data: "{param:test_param}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(data) {$("#replace").html(data);}
});

并且都没有奏效。我退了一步,试图复制.load功能并执行:

$.ajax({
  url: '/test',
  success: function(data) {
    $('#replace').html(data);
    alert('Load was performed.');
  }
});

它也不起作用。

任何人都有关于如何做到这一点的任何提示?

3 个答案:

答案 0 :(得分:0)

您确定可以直接使用ajax调用/test吗?还要看看你打电话给的绝对网址是什么。尝试添加错误回调并查看它是否有效,它将为您提供错误响应,以帮助您解决问题。

答案 1 :(得分:0)

您看到的原始.post代码正确

$.post('/test', { param: "test_param" }, function(data) {
 $('#replace').html(data);
});

您还可以尝试查看浏览器JavaScript控制台,看看是否有任何错误报告。

答案 2 :(得分:0)

您的控制器是否设置为自动JSON编码视图参数?

无论哪种方式,我认为你应该像

那样访问它

{success:function(data){$(“#replace”)。html(data.message); }