使用jquery ajax asp.net 4.0调用asmx服务

时间:2011-01-26 18:50:56

标签: asp.net jquery asmx

我正在尝试使用jquery调用示例asmx服务,这里是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数据,它在alert

中显示为null
success: function (data) {
    edata = $(data).find("string").html();
    alert(data);
}

4 个答案:

答案 0 :(得分:6)

我相信这是因为你有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);                    
            }
        });

更新

我认为这是因为你使用的是.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);
    }
})

答案 1 :(得分:2)

我建议将[ScriptService]属性添加到Tasks.asmx类中,以便它接受并以JSON而不是XML进行响应。您的客户端代码看起来不错,但您需要在成功处理程序中查看“data.d”而不是“data”。

答案 2 :(得分:2)

  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>

答案 3 :(得分:1)

好吧,你说的是dataType是JSON,但是contentType是XML。尝试

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

如果没有,那么我们必须看到asmx代码。