2014-12-03 88 views
0

有幾個問題與此有些類似,但我一直無法讓他們的解決方案爲我工作。AJAX調用返回結果,但是在空白頁面

基本上,我正在做一個正常工作的AJAX調用 - 結果會回來。問題在於,不是處理結果,而是將結果數組打印回屏幕(並刪除其他所有內容)。顯然,它並沒有正確處理傳入的結果,但我不知道爲什麼。

這是正在發送的形式:

<form class="removeAndApply" method="post" action=""> 
    …hidden inputs... 
    <button type="submit">Use</button> 
</form> 

正在處理AJAX的PHP:

case "removeAndApply_PromoCode": 
    …Get data from $_POST…. 
    …process stuff... 
    $response = …..; 
    $finalPrice = ….; 

    $dataArray = array('response'=>$response, 'finalPrice'=>$finalPrice); 
    header('Content-type: application/json'); 
    echo json_encode($dataArray); 
    exit(); 
    break; 

下面是一個示例結果的文字,作爲故障期間我的屏幕上印刷: {"response":{"Col1":"13","0":"13","Col2":"PC2","1":"PC2","Col3":"1","2":"1","Col4":"45.89","3":"45.89","col5":null,"4":null,"Col6":"1","5":"1"},"finalPrice":0}

這是應該處理它的javascript函數:

$('.removeAndApply').ajaxForm({url: this.href, type:'post', 
    data: this.serialize, 
    dataType: 'json', 
    success: function(response){ 
     alert("asdf"); 
    } 
}); 

謝謝。

+0

在你的成功函數中執行** console.log(data); **並查看控制檯。什麼是返回? – alda1234 2014-12-03 16:48:21

+0

沒有 - 我懷疑它在進入成功函數 – 2014-12-03 16:50:12

+0

之前失敗,所以你的編碼數組的方式可能是錯誤的。如果你刪除exit(),會發生什麼? – alda1234 2014-12-03 16:51:49

回答

0

這可能是更適合評論,但我沒有足夠的代表爲,所以:

這是你會看到,如果你不綁定Ajax表單功能行爲的類型以這種形式...按鈕提交表單正常,你只是看到普通的json來自服務器作爲對(非Ajax)職位的迴應。你確定ajaxForm()語句正在執行嗎?

0

該問題似乎是HTML按鈕類型屬性。當您在<form>中有<button type="submit">並且您點擊它時。表單提交,請求被髮送到服務器,瀏覽器在新文檔中打開新的響應。

如果你做一些修改:

HTML:

<form class="removeAndApply" method="post" action=""> 
    …hidden inputs... 
    <button type="button" id="submit-form">Use</button> 
</form> 

JS:

$('#submit-form').on('click', function() { 
    $.ajax({ 
    type: 'post', 
    url: window.location.href, 
    data: $('.removeAndApply').serialize(), 
    dataType: 'json', 
    success: function(res) {...}, 
    error: function(err) {...} 
    }); 
}); 

一切都應該罰款。