Простой AJAX не работает

У меня есть этот код AJAX, но он, похоже, не вызывает метод предупреждения. Вместо этого ничего не происходит. Я просмотрел это с помощью Fiddler и получил следующее сообщение об ошибке: {"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

Я пытаюсь вызвать веб-метод в коде программной части под названием MyWebMethod:

 $.ajax({   type: "POST",
            url: "Test.aspx/MyWebMethod",
            data: "{" + username + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",

            success: function() {
                alert("success");
            },

            fail: function() {
                alert("Fail");
            }
 });

Веб-метод работал нормально, когда у меня был диспетчер сценариев на странице, но я хотел удалить диспетчер сценариев и подумал, что использование AJAX будет лучшим способом.

Спасибо


person o-logn    schedule 10.03.2010    source источник
comment
сначала попробуйте его без данных, вызовите что-то, что вернет что-то вроде отметки времени сервера ... в виде строки и предупредит об этом. Убедитесь, что имя пользователя вашего веб-метода совпадает ... РЕДАКТИРОВАТЬ: Я отслеживаю изменения на странице ... на данном этапе может быть неуместным ...   -  person Mark Schultheiss    schedule 11.03.2010


Ответы (2)


Я думаю, если вы измените fail на error, вы получите второе окно предупреждения.

[Edit] Думаю, если потом поменять

data: "{" + username + "}"

to

data: "{ 'username': '" + username + "' }"

вы получите первое предупреждение, хотя трудно понять это, не видя службу, в которую вы звоните.

person pdr    schedule 10.03.2010
comment
Привет, я изменил его на ошибку, и предупреждение отображается. Но я не уверен, почему это не удается - person o-logn; 11.03.2010
comment
Ах, извините, я не видел вашу правку. Проблема решена! Однако веб-метод возвращает логическое значение. Как я могу получить это значение из раздела «успех:» (или из любого другого места в вызове)? Спасибо - person o-logn; 11.03.2010
comment
Чтобы данные возвращались успешно, измените success: function () на success: function (data). В зависимости от настроек вашей службы вы получите либо данные, которые являются вашим логическим значением, либо данные со свойством .d, которое является вашим логическим значением. - person pdr; 11.03.2010
comment
Бинго! Большое спасибо за помощь. Я использовал свойство .d. - person o-logn; 11.03.2010

У вас есть настраиваемые ошибки, включенные в web.config. Следовательно, возвращаемое исключение будет общим (в основном пустым) и каждый раз будет одинаковым. Это затрудняет отладку.

Чтобы увидеть реальное исключение, временно отключите пользовательские ошибки. Вот как это сделать только для веб-служб, если вам нужно эта детализация.

person Bill Paetzke    schedule 03.11.2010