2013-10-18 70 views
0

我有以下的Ajax調用:jQuery的阿賈克斯成功函數從來沒有所謂

$.ajax({ 
    type: 'POST', 
    url: myBaseUrl + 'Products/addItemToBasket', 
    dataType: 'json', 
    data: { 
     id: window.location.pathname.substring(window.location.pathname.lastIndexOf('/') + 1), 
     amount: amount 
    }, 
    success: function (data) { 
     alert(data); 
     var dat = JSON.parse(data); 
     } 
    } 
}); 

現在這個調用PHP下面的方法:

public function addItemToBasket() 
{ 
    if ($this->request->is('post')) { 
     //todo delete efter at have insat fancybox med valg af antal styk. (sendes via ajax). 
      $shopping = null; 
      $item = $this->Product->find('first',array('conditions' => array('Product.id' =>$this->request->data['id']))); 
     if(isset($_SESSION['basket'])){ 
      $shopping = $_SESSION['basket']; 
     }else{ 
      $shopping = array(); 
     } 
     array_push($shopping,$item); 
     $_SESSION['basket'] = $shopping; 
     echo json_encode($_SESSION['basket']); 
    } 
} 

當我嘗試調試它一切正常(它進入php函數)並更新我的$_SESSION變量。

但它永遠不會運行成功功能,它永遠不會提醒數據。

我在做什麼錯了?

+3

你應該回應'json_encode。 。 。?? – 2013-10-18 19:00:57

+0

您對this-> request->的使用是('post')讓我相信這是一個cakephp應用程序。如果是這樣,那麼只是一個回聲不會轉儲輸出,你將不得不在相關的視圖中輸出這個。也可以用cakephp來標記這可能也有幫助。 – jhnlsn

+0

如果你只是提醒(「測試」)或設置斷點?你確定它沒有進入成功功能嗎? –

回答

2

注:我知道這個問題是從幾個月前,但任何幫助將有助於尋找這種問題的答案的人。

據我所知,因爲我運行的是類似的問題,這一切都取決於您從web服務獲得的響應(您可以使用Chrome調試控制檯查看)。舉例來說,我現在得到這個:

  • 的readyState:4
  • 狀態文本: 「OK」
  • 的responseText:(結果我找的)

的問題是,正如你所說,我總是能夠運行回調的錯誤部分,而不是成功,即使我得到正確的responseText。正如我讀過的那樣,這是因爲對WS的調用是OK的,但是來自JSON的解析不是,所以它稱爲「錯誤」。

到目前爲止,我不知道如何解決它,但也許這會給出一個線索。

+0

歡迎來到StackOverflow!如果你確定回答這個問題,請只回答。 –

+0

明白了!對不起,我無法提供更多幫助。 感謝您的意見。 –