2012-08-12 141 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