jQuery ajax 返回資料時報錯readystate:0 status:0 statusText:"error"; Firefox報錯,谷歌正常;
阿新 • • 發佈:2019-02-03
先上一段程式碼:
url: "/ENV/operate_show", dataType:"json", contentType:"application/json;charset=utf-8", data: data1, type: "POST", async: true, success: function (sev) { var log = sev.logg; var start_infor = sev.startinfor; $('#infortext').text(start_infor); $("#log").text(""); log.forEach(function(e){ $("#log").append($("<div></div>").text(e)) }); $("#load-mod").hide(); $("#ss").text("stopped").show(); $("#operate-button").text("start"); checkLog() $("#operate-button").removeAttr('disabled') }, error: function (sev) { console.log(sev) }
Firefox每次到ajax返回資料這塊,直接走了error,排除了後臺資料以及各式;後來用chrome試了下,竟然好著,所以考慮到不相容問題;
查了資料排除了相容性問題;後來發現火狐下返回的是object,而谷歌是json,所以問題就出在了這,火狐會將後臺返回的json轉成物件。
所以改成了這樣,
......
dataType:"text",
contentType:"application/json;charset=utf-8",
data: data1,
type: "POST",
async: true,
success: function(sevv) {
console.log(sevv);
var sev = JSON.parse(sevv);
if ('err' === sev.err) {
// err err_info log
var err_info = sev.err_info;
console.log('2222',sev)
console.log(err_info)
var log = sev.log;
將ajax中的dataType改為'text',success 回撥函式將返回的 字串 轉換為json,再進行處理就好了。希望對大家有所幫助。