【问题标题】:calling asmx service using jquery ajax asp.net 4.0使用 jquery ajax asp.net 4.0 调用 asmx 服务
【发布时间】:2011-06-16 01:41:17
【问题描述】:

我正在尝试使用 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 数据,它在警报中显示为 null

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

【问题讨论】:

  • 尝试添加 complete: function(x,y,z){ } 看看返回了什么

标签: asp.net jquery asmx


【解决方案1】:

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

【讨论】:

  • 你明白了,在完整的情况下,我试图将 xml 解析为“edata = $(data).find("string").html();"它返回 null。
  • 我将数据类型设置为 xml,现在成功可以了,但现在 xml 解析中出现错误
  • 您在解析 XML 时遇到错误?你用什么来解析 XML?也许更新您的问题以包含响应 XML,以便我们对其进行测试。
  • 谢谢哥们,用 text() 代替 html 解决了这个问题。
【解决方案2】:

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

【讨论】:

    【解决方案3】:
      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>
    

    【讨论】:

      【解决方案4】:

      好吧,您是说 dataType 是 JSON,但 contentType 是 XML。试试

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

      如果没有,那我们就得看 asmx 代码了。

      【讨论】:

        【解决方案5】:

        No hay necesidad de colocar "ContentType", te muestro un ejemlo:

        //AJAX

        $("#btnEnviar").on("click", function () {
                var x = $("#form-login").serialize();
                  $.ajax({
                    type: "post",
                    url: "/WebService1.asmx/data",
                    data: x,              
                    success: function (data) {
                        var edata = $(data).find("string").text();
                        alert(edata);
                    }
                  });      
                });
        

        //网络服务

        [WebMethod]
                public String data(string txtusuario, string txtContra)
                {
                    //Acceso acc = new Acceso();
                    return "la data funciona correctamente usuario: "+txtusuario+" 
                    contraseña: "+txtContra;
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-25
          • 1970-01-01
          相关资源
          最近更新 更多