2012-03-27 91 views
1

我想要使用AJAX刪除操作是異步的,在控制器我作出這樣的處理請求錯誤JSON parsing- Zend框架

public function deleteAction() { 

    $request = $this->getRequest(); 
    if ($request) { 
     $visitId = $request->getParam('visit_id'); 
     $mapper = new Visits_Model_VisitsMapper(); 
     try { 
      $mapper->deleteVisit($visitId); 
      echo json_encode("1"); 
     } catch (Exception $e) { 
      $this->view->message = "error inserting Data, Error details: " . $e->getMessage(); 
      echo json_encode("0"); 
     } 

     Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true); 
    } 
} 

,並在jQuery腳本

$("a.delete").live('click',function(e){ 
    e.preventDefault(); 
    var data={ 
       "visit_id":$(this).parent().parent().attr("id") 
    }; 

    jQuery.ajax({ 
     url: "/visits/visit/delete", 
     type: "POST", 
     dataType: 'json', 
     data: requestDate, 
     success: successCallback, 
     error:failureCallback 
    }); 

行動當我點擊刪除按鈕時,請求被髮送並彈出一個錯誤

Error <!-- application/layouts/scripts/layout.phtml --> 
the whole html of layout page.... 
error SyntaxError: JSON.parse: unexpected character 

我檢測到d elete過程不會發生! 當我發送同步請求時,刪除操作成功發生。而且當我在不使用Layout頁面的情況下進行AJAX調用時,刪除也成功。

什麼是錯誤?

+0

'數據類型:「JSONP」,'改變,並給它另一個去...通常可以解決問題。 – Val 2012-03-27 11:49:26

+0

不,它不工作... – palAlaa 2012-03-27 12:37:25

回答

0

我懷疑你的佈局被渲染,然後被jQuery代碼解析(失敗)。嘗試將其關閉:

try { 
    $mapper->deleteVisit($visitId); 
    if ($this->getRequest->isXmlHttpRequest()) { 
     $this->_helper->json("1"); //this will disable layout and view renderer 
            //and echo your data 
    } 
    else { 
     //... 
    } 
} 
+0

這是一個簡單的錯誤跟蹤,只是仔細閱讀錯誤是什麼文件和行 – bububaba 2012-03-27 12:36:42