1. 程式人生 > >jQuery ajax 返回資料時報錯readystate:0 status:0 statusText:"error"; Firefox報錯,谷歌正常;

jQuery ajax 返回資料時報錯readystate:0 status:0 statusText:"error"; Firefox報錯,谷歌正常;

先上一段程式碼:

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,再進行處理就好了。希望對大家有所幫助。