簡體   English   中英

jQuery 不處理來自 AJAX POST 的 JSON 響應

[英]jQuery not handling JSON response from AJAX POST

更新:我正在發布 HTML FORM 數據,但希望收到 JSON 數據。 不想發布 JSON 數據。

我正在嘗試從執行 HTML FORM POST 請求中獲取 JSON 響應。 使用簡單的 HTML FORM POST 請求(即不是 AJAX)時,我已成功收到 JSON 回復。 我對 HTML FORM POST 的 JSON 響應是這樣的:

{"success":true,"data":1234567}

當我嘗試使用 jQuery 的 .ajax() 處理請求和響應時,就會出現問題。

$.ajax({
    type: "POST",
    url: URL,
    data: data1,
    dataType: "json",
    success: function(data, textStatus, jqXHR) {
        alert ("success");
    },
    error: function(xhr, status, error) {
        alert ("Error: " + error);
    }
});

在 Firebug 中運行上述代碼並調試后,POST 請求似乎正在通過,但響應的處理出現了問題。 Firebug 告訴我有關 POST 請求的 HTTP 響應的以下信息:

Response Headers
Cache-Control   private
Content-Length  31
Content-Type    application/json; charset=utf-8
...

因此,似乎正在發送 31 個字節的數據。 但是,在調試實際的 Javascript 時,會調用錯誤函數並且 xhr 對象是這樣的:

Object { readyState=0, status=0, statusText="error"}

我知道 jQuery.ajax() 文檔指出“在 jQuery 1.4 中,JSON 數據以嚴格的方式解析;任何格式錯誤的 JSON 都會被拒絕並引發解析錯誤。” 但是,我相信我的 JSON 是有效的,因為我在 jsonlint.com 上檢查過它。

還有什么問題?

它看起來像你得到一個服務器錯誤。 我會檢查響應的狀態代碼並修復導致服務器上的請求失敗的任何內容。

我遇到了同樣的問題。 這似乎是Cross Domain的一個問題。

找到這個答案: https//stackoverflow.com/a/7605563/154513

幫助過我。

你收到錯誤是因為data1沒有在json中格式化,所以當它收到數據時會得到一個解析錯誤。 data1需要格式化:

data1={"apikey":apikey,
        "firstname":fName
      }

有時 Jquery 會為當前數據返回內部錯誤 500。

有示例讀取相同的 json 數據而沒有我們的錯誤

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://reqres.in/api/products/3", true);
xhr.onload = function(){
    console.log(xhr.responseText);
};
xhr.send();

暫無
暫無

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

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