вызов службы asmx с использованием jquery ajax asp.net 4.0 - PullRequest
7 голосов
/ 26 января 2011

Я пытаюсь вызвать пример службы asmx, используя jquery, вот код jquery

$.ajax({
            type: "POST",
            url: "/Services/Tasks.asmx/HelloWorld",
            data: "{}",
            dataType: "json",
            contentType: "application/xml; charset=utf-8",
            success: function (data) {                   
                alert(data);                    
            }
        });

Это не показывает никакого сообщения, код в asp.net 4.0, Я что-то пропустил?

Редактировать - я изменил dataType на xml, теперь функция успеха работает, он возвращает следующий xml

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello World</string>

Я использую следующий код для разбора данных xml, и он показывает ноль в предупреждении

success: function (data) {
    edata = $(data).find("string").html();
    alert(data);
}

Ответы [ 4 ]

6 голосов
/ 26 января 2011

Я полагаю, это потому, что у вас есть dataType: "json", и он ожидает, что тип содержимого ответа будет таким же, но возвращается XML. Могу поспорить, что полное событие поднимается, но не успешно.

попробуй

$.ajax({
            type: "POST",
            url: "/Services/Tasks.asmx/HelloWorld",
            data: "{}",
            dataType: "json",
            contentType: "application/xml; charset=utf-8",
            success: function (data) {                   
                alert(data);                    
            },
            complete: function (data) {                   
                alert(data);                    
            }
        });

UPDATE

Я думаю, это потому, что вы используете .html (), вам нужно использовать text (). Кроме того, я не знаю, хотели ли вы это сделать или нет, но в вашем предупреждении указано data, я предполагаю, что вы намеревались использовать edata. У меня сработало следующее:

jQuery.ajax({
    type: "POST",
    url: "/yourURL",
    dataType: "xml",
    data: "{}",
    contentType: "application/xml; charset=utf-8",
    success: function(data) {
        edata = $(data).find("string").text();
        alert(edata);
    }
})
2 голосов
/ 11 апреля 2011
  use it.

   <script>
        alert("aaa");
    $.ajax({
        type: "POST",
        url: "MyService.asmx/HelloWorld",
        data: "{}",
        dataType: "xml",
        contentType: "application/xml; charset=utf-8",
        success: function (data) {
        alert(data);//data-object xmldocument
        edata = $(data).children("string").text();
        alert(edata);

        }
    });
    alert("bbb");
    </script>
2 голосов
/ 27 января 2011

Я бы рекомендовал добавить атрибут [ScriptService] в ваш класс Tasks.asmx, чтобы он принимал и отвечал в JSON вместо XML.Ваш клиентский код выглядит хорошо, но вы захотите взглянуть на «data.d» вместо «data» в вашем обработчике успеха.

1 голос
/ 26 января 2011

Ну, вы утверждаете, что dataType - это JSON, а contentType - это XML.Попробуйте

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

Если нет, то мы должны увидеть код asmx.

...