データの取得に失敗しているjqueryからのハンドラーへの非常に単純なajax呼び出しがありparsererror
、アラートボックスに結果を表示しようとするとそれが表示されます。
ASP.NET ハンドラー コード:
public void ProcessRequest (HttpContext context) {
string json = new StreamReader(context.Request.InputStream).ReadToEnd();
context.Response.ContentType = "application/json";
context.Response.Write(json);
}
Jクエリ
$('.submit').on("click",function(e) {
e.preventDefault();
var data1 = { "hi": "hello" };
alert(data1.hi);
$.ajax({
url: "/charity-challenge/CompetitionHelper.ashx",
data: data1,
dataType: 'json',
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("response = " + data);
},
error: function (data, status) {
alert("FAILED:" + status);
}
});
});
注: デバッグ中に Chrome で正常に応答することがわかります。しかし、どういうわけかアラートボックスに表示しようとすると、パーサーエラーが発生します。
また、ハンドラーにjsonデータを割り当てたいです。私はそれを行う方法の手がかりがありません。
ハンドラーにこのようなサンプル カルスがあります。json データをループしてこの変数に値を割り当てる方法を教えてください。
public class userData
{
public string EmailAddress { get; set; }
public string EntryId { get; set; }
}
これに対する回避策を見つけました。
私は完全なコールバックを追加し、アラートボックスに結果を表示しています。それなしでは機能しない理由はわかりませんが、誰かが知っている場合は回答を投稿してください。
これが完全なコールバックです。
complete: function(xhr, status) {
if (status === 'error' || !xhr.responseText) {
alert("Error");
}
else {
var data = xhr.responseText;
alert(data);
//...
}
}