1. ホーム
  2. javascript

[解決済み] jQueryがajaxリクエストに対して "parsererror "を返す

2022-02-07 07:53:15

質問

Ajaxリクエストでjqueryから"parsererror"を受けています。私はPOSTをGETに変え、いくつかの異なる方法(クラスの作成など)でデータを返そうとしましたが、何が問題なのか理解できないようです。

私のプロジェクトはMVC3で、jQuery 1.5を使用しています。 私はドロップダウンを持っており、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)

ジャバスクリプトです。

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" というエラーイベントを発生させます。

どうすればいいですか?

最近この問題に遭遇し、この質問を偶然見つけました。

もっと簡単な方法で解決しました。

方法1

を削除するか dataType: 'json' プロパティをオブジェクト・リテラルから削除してください。

方法2

または、@Sagiv が言っていたように、データを次のように返すこともできます。 Json .


その理由は、この parsererror のメッセージが発生するのは、単に文字列や他の値を返しただけでは、実際には Json そのため、パーサーは解析に失敗します。

そこで、もし dataType: json プロパティとしてパースしようとしません。 Json .

もう一方のメソッドでは、データを必ず Json パーサーはそれを適切に処理する方法を知っています。