跨域使用WebService

Consuming WebService in Cross Domain

应该很简单。我已经阅读了很多关于跨域使用 Web 服务和使用 JSONP 的帖子,但是我缺少一些东西。

如果我在 WebBrowser 中调用以下 URL,我可以得到我的结果: http://benfaniz.com.br/WebService.asmx/AAA_Buscar_Nome_Condominio?callback=?

要使用 jQuery 使用它,我正在使用:

    $(document).ready(function() {
        var surl = "http://benfaniz.com.br/webservice.asmx/AAA_Buscar_Nome_Condominio";
        $.ajax({
            type: 'POST',
            url: surl,
            dataType: "jsonp",
            success: function(msg) {
                alert(msg.data);
            },
            error: function(xhr, status, error) { 
                alert("error"); 
            }
        });
    });

这是JS Fiddle

但我总是出错?有什么问题?


更新

我可以使用以下代码获取 URL 的内容(取自 here

    $(document).ready(function() {


        var theUrl = "http://benfaniz.com.br/WebService.asmx/AAA_Buscar_Nome_Condominio?callback=?"            

            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    alert(xmlhttp.responseText);
                }
            }
            xmlhttp.open("GET", theUrl, false );
            xmlhttp.send();    


    });

请看JS Fiddle

我能做到。我发现这个问题 here 给了我指示。

主要问题是我得到的结果是 XML 而不是 JSON。要更改此设置,我必须添加行 contentType: "application/json; charset=utf-8".

最终代码如下:

$(document).ready(function() {
    var surl = "http://benfaniz.com.br/webservice.asmx/AAA_Buscar_Nome_Condominio";
    $.ajax({
        url: surl,
        contentType: "application/json",
        dataType: "json",
        success: function (json) {
            alert(json.d);
        },
        error: function (xhr) {
            alert("ERRO");
        }
    }); 
});

JS Fiddle