2012-08-12 116 views
0

我对Zend Ajax有一些问题。这是我的js代码:Ajax调用不显示响应 - Zend Framework

function deleteNewsCategory(cId) { 
var conf = confirm("Are you sure you want to delete the item?"); 

if(conf) { 
    $.ajax({ 
     dataType: 'json', 
     url: '/ajax/deletenewscategory', 
     type: 'POST', 
     data: { 
      cId : cId 
     }, 

     success: function (response) { 
      alert(response); 
     } 
    }); 
} 

}

这是我AjaxController:

public function init() { 
    $this->_helper->ajaxContext->addActionContext('deletenewscategory', 'json') 
      ->initContext(); 
} 

public function deletenewscategoryAction() { 
    if ($this->getRequest()->isPost()) { 
     echo $this->_request->getPost('cId'); 
    } 
} 

我添加deleteNewsCategory功能提交按钮,但是当我点击这个按钮,会出现确认信息,然后点击好的,我什么都没看到?

回答

1

可能出现了JavaScript错误阻止提交的发生,或者响应不包含JSON数据,以便您的处理程序不会被调用。

你有与ajax.phtml后缀,因为你使用的是Ajax的上下文视图脚本?

看看在deletenewscategoryAction导致警报您的回音声明显示出来后,加入exit;

接下来的事情将是使用萤火虫或为的LiveHTTPHeaders Firefox或Wireshark的嗅出了HTTP请求和响应,看你做了什么回数据。

编辑:既然你得到一个404错误,请尝试:

url: '<?php echo $this->url(array('controller' => 'ajax', 
            'action'  => 'deletenewscategory'), 
          null, true) ?>', 

通过使用url()助手会根据您的路线和基本路径构造一个URL。

您的警报没有显示出来的原因是因为404包含HTML,而不是有效的JSON,jQuery是不是要求你的成功处理程序。

+0

不要有JavaScript错误,CID才有价值,我添加警报(1)成功:函数(响应){警报(1); ...,但没有看到什么? – Defense 2012-08-12 19:56:36

+0

如果HTTP响应不包含有效的JSON(例如它有HTML),那么你的jQuery回调将不会被调用。尝试从Ajax请求中删除'dataType',或者使用wireshark嗅探完整的HTTP响应并查看返回的内容。 – drew010 2012-08-12 20:00:11

+0

好吧我安装Wireshark,我需要在http中搜索? – Defense 2012-08-12 20:26:41