JQuery 1.6.2 ajax-запрос к aspx метод всегда возвращает parsererror - PullRequest
2 голосов
/ 03 июля 2011

Я готов начать тянуть свои волосы здесь.Попытка использовать jquery ajax-запрос в Firefox, чтобы вернуть простую строку из метода в моем коде позади.Независимо от того, что я стараюсь, я всегда получаю parsererror - неожиданный персонаж.Я попробовал по крайней мере дюжину различных вариантов, основанных на демонстрациях, которые я нашел в Интернете, но ни одна из них не работает.

 $.ajax({
                type: 'POST',
                url: '/Search/BasicSearch.aspx/sayHello',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: '{}',
                success: function (msg) {
                    alert(msg.d);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(textStatus + '  ' + errorThrown);
                }
            });

- код метода

[WebMethod]
        public static string sayHello()
        {
            return "hello world";
        }

Я попытался вернуть правильно отформатированную строку jsonв этом методе все еще не работал.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что этот сайт будет работать на .NET 2.0.После неудачной попытки предложенного ниже предложения Уилла установить формат ответа JSON, я решил попробовать обычный универсальный обработчик и посмотреть, что произойдет.Конечно же, это сработало.

открытый класс Handler1: IHttpHandler {

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/json";
    context.Response.Write("{\"\": \"hello world\"}");
}

public bool IsReusable
{
    get
    {
        return false;
    }
}

}

Итак, я предполагаю, что это основная проблема со страницами ASPX .NET 2.0 ???Я думаю, что все примеры, которые я видел, использовали по крайней мере 3.0.

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

попробуйте это будет работать.

Поскольку ваш возвращаемый тип не чистый json или он думает, что по этой причине он не работает,

удалить тип данных: json и попробовать, должно работать

$.ajax({
                type: 'POST',
                url: '/Search/BasicSearch.aspx/sayHello',
                contentType: "application/json; charset=utf-8",
                data: '{}',
                success: function (msg) {
                    alert(msg.d);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(textStatus + '  ' + errorThrown);
                }
            });
1 голос
/ 06 июня 2012

Много поработав над этой проблемой, я нашел решение:

Вы говорите своему AJAX-вызову, что ответ имеет формат JSON, и это не правильно:

contentType: "application/json; charset=utf-8", 
dataType: "json",

.NET веб-сервисы не отвечают в JSON (по крайней мере, без их настройки). Удалите dataType и установите для contentType значение "charset = utf-8".

1 голос
/ 03 июля 2011

Попробуйте это:

return '{"": "hello world"}';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...