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
、パーサーはそれを適切に処理する方法を認識できます。