jQuery が Ajax リクエストに対して「parsererror」を返す 質問する

jQuery が Ajax リクエストに対して「parsererror」を返す 質問する

Ajax リクエストに対して jQuery から「parsererror」が発生しました。POST を GET に変更したり、いくつかの異なる方法 (クラスの作成など) でデータを返したりしてみましたが、問題が何なのかわかりません。

私のプロジェクトは MVC3 で、jQuery 1.5 を使用しています。ドロップダウンがあり、onchange イベントで、選択された内容に基づいてデータを取得するための呼び出しを実行します。

ドロップダウン: (これにより、Viewbag のリストから「ビュー」が読み込まれ、イベントの起動が正常に機能します)

@{
    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

最近この問題に遭遇し、この質問に出会いました。

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

方法1

dataType: 'json'オブジェクトリテラルからプロパティを削除することもできます...

方法2

または、データを として返すことで、@Sagiv が言ったことを実行できますJson


このメッセージが表示される理由parsererrorは、単に文字列または別の値を返すだけでは、実際には ではないJsonため、パーサーが解析に失敗するためです。

したがって、プロパティを削除するとdataType: json、 として解析されなくなりますJson

他の方法では、データを として返すようにすればJson、パーサーはそれを適切に処理する方法を認識できます。

おすすめ記事