Сбой вызова jjuery ajax с неопределенной ошибкой - PullRequest
0 голосов
/ 05 июня 2010

Мой вызов jQuery ajax завершается с ошибкой undefined . Мой код 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

1 Ответ

2 голосов
/ 05 июня 2010

Вам нужен действительный JSON! :)

Изменить эту строку:

context.Response.Write("{ data: [1,2,3] }");

К этому:

context.Response.Write("{ \"data\": [1,2,3] }");

jQuery 1.4+ не допускает недопустимый JSON, как это было раньше (не работает тихо / странным образом), поэтому просто добавьте двойные кавычки и все готово. Для удобного инструмента для проверки правильности JSON, проверьте JSONLint: http://www.jsonlint.com/

...