簡體   English   中英

阿賈克斯總是會出錯

[英]ajax always going to error

我正在嘗試學習使用Ajax,但不幸的是我無法success

$('.engineering-services').live('click', function() {     
$.ajax({
    url: 'index.php?route=information/information/homepage_info',
    type: 'post',
    data: {info_description : 'test'},
    dataType: 'json',
    success:    function(json){
    alert('pass');
    },
    error: function(json) {
    alert('fail');
    }
    });

});

這是php函數...

    public function homepage_info() {
    $json = array();
    if (isset($this->request->post['info_description'])) {  
    echo $this->request->post['info_description'];
    echo '<br /> test2';
    }
    $this->response->setOutput(json_encode($json));
    }

但是,這總是發出失敗警報,而不是通過警報。 我在這里錯過明顯的東西嗎?

編輯:找到功能正常,因為它在控制台中給出了正確的響應,

測試

測試2

謝謝

如果您的dataType設置為json,則返回的任何非JSON內容都將導致ajax調用出錯。 嘗試將一些json發送回腳本... {“ test”:“ abc”}或類似名稱。 例如,我看到了幾個調用以在您的代碼中echo

不僅如此,打印到瀏覽器的任何PHP錯誤/警告/通知都將中斷呼叫。

提示:您可以使用json_encode()從PHP變量生成有效的JSON。

您不能將現有查詢字符串與數據結合使用。 這樣的事情應該起作用(或至少在語法上有效):

$.ajax({
    url: 'index.php',
    type: 'post',
    data: {information:'information/information/homepage_info',info_description:'test'},
    dataType: 'json',
    success:function(json){
        alert('pass');
    },
    error:function(json) {
        alert('fail');
    }
});

同樣如前所述,任何不是json的內容都可能會導致錯誤,因此您不會echo這些html組件...如果有,請print它們。

另外,請注意,您的dataType應該在服務器端使用header('Content-type: application/json'); index.php而不是在jQuery腳本中聲明。 它保證以這種方式被識別為json,而且Javascript代碼更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM