亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery為ajax請求返回“ parsererror”

jQuery為ajax請求返回“ parsererror”

慕少森 2019-11-27 10:19:35
我一直在從jquery收到針對Ajax請求的“ parsererror”,我嘗試將POST更改為GET,以幾種不同的方式(創建類等)返回數據,但我似乎無法弄清楚問題出在哪里。我的項目在MVC3中,我使用的是jQuery 1.5,我有一個Dropdown,并且在onchange事件上,我觸發了一個調用,以根據所選內容獲取一些數據。下拉列表:(這會從Viewbag的列表中加載“ Views”,并觸發事件可以正常進行)@{    var viewHtmls = new Dictionary<string, object>();    viewHtmls.Add("data-bind", "value: ViewID");    viewHtmls.Add("onchange", "javascript:PageModel.LoadViewContentNames()");}@Html.DropDownList("view", (List<SelectListItem>)ViewBag.Views, viewHtmls)Javascript:this.LoadViewContentNames = function () {    $.ajax({        url: '/Admin/Ajax/GetViewContentNames',        type: 'POST',        dataType: 'json',        data: { viewID: $("#view").val() },        success: function (data) {            alert(data);        },        error: function (data) {            debugger;            alert("Error");        }    });};上面的代碼成功調用了MVC方法并返回:[{"ViewContentID":1,"Name":"TopContent","Note":"Content on the top"}, {"ViewContentID":2,"Name":"BottomContent","Note":"Content on the bottom"}]但是jquery觸發$ .ajax()方法的錯誤事件,提示“ parsererror”。
查看完整描述

3 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我最近遇到了這個問題,偶然發現了這個問題。


我用一種簡單得多的方法解決了它。


方法一


您可以dataType: 'json'從對象文字中刪除該屬性...


方法二


或者您可以通過將數據返回為來執行@Sagiv所說的Json。


parsererror出現此消息的原因是,當您僅返回一個字符串或另一個值時,它不是真正的Json,因此解析器在解析時會失敗。


因此,如果刪除該dataType: json屬性,它將不會嘗試將其解析為Json。


使用其他方法,如果您確保將數據返回為Json,則解析器將知道如何正確處理它。


查看完整回答
反對 回復 2019-11-27
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

有關正確的方法,請參閱@ david-east 的答案


該答案僅與使用file:協議時jQuery 1.5的錯誤有關。


升級到jQuery 1.5時,我最近遇到了類似的問題。盡管得到正確的響應,但錯誤處理程序仍被觸發。我通過使用complete事件來解決它,然后檢查狀態值。例如:


complete: function (xhr, status) {

    if (status === 'error' || !xhr.responseText) {

        handleError();

    }

    else {

        var data = xhr.responseText;

        //...

    }


查看完整回答
反對 回復 2019-11-27
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您已將ajax呼叫響應dataType指定為:


'json'


實際的Ajax響應不是有效的JSON,因此JSON解析器拋出錯誤。


我建議的最佳方法是將dataType更改為:


'文本'


在成功回調中,驗證是否返回了有效的JSON,如果JSON驗證失敗,則在屏幕上提醒它,以使其明顯表明ajax調用實際上是出于什么目的??纯催@個:


$.ajax({

    url: '/Admin/Ajax/GetViewContentNames',

    type: 'POST',

    dataType: 'text',

    data: {viewID: $("#view").val()},

    success: function (data) {

        try {

            var output = JSON.parse(data);

            alert(output);

        } catch (e) {

            alert("Output is not valid JSON: " + data);

        }

    }, error: function (request, error) {

        alert("AJAX Call Error: " + error);

    }

});


查看完整回答
反對 回復 2019-11-27
  • 3 回答
  • 0 關注
  • 1075 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號