私のjQueryajax呼び出しは、未定義のエラーで失敗します。私のjsコードは次のようになります:
$.ajax({
type: "POST",
url: "Data/RealTime.ashx",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 15000,
dataFilter: function(data, type) {
alert("RAW DATA: " + data + ", TYPE: "+ type);
return data;
},
error: function(xhr, textStatus, errorThrown) {
alert("FAIL: " + xhr + " " + textStatus + " " + errorThrown);
},
success: function(data) {
alert("SUCCESS");
}
});
私のajaxソースは一般的なASP.NETハンドラーです。
[WebService(Namespace = "http://my.website.com")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class RealTime : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
context.Response.Write("{ data: [1,2,3] }");
context.Response.End();
}
public bool IsReusable
{ get { return false; } }
}
"{ }"
ここで、ハンドラーに空のオブジェクト()を返すと、呼び出しは成功します。しかし、他のJSONオブジェクトを返すと、呼び出しは失敗します。
ハンドラーは、dataFilter
正しいオブジェクトを受け取っていることを示しています。Firebugは期待どおりの応答を表示し、JSONタブはオブジェクトが正しく解析されたことを示します。
では、何が原因でしょうか?
[編集]実際に「無効なJSONオブジェクトを返すと、呼び出しが失敗する」と書くべきでした!:D