使用json调用远程Web服务

时间:2011-11-26 05:56:56

标签: asp.net json web-services

我为我做了一个网络服务,它在本地计算机上运行良好。

现在我在iis上部署我的项目,并希望从服务部署的URL

中使用该服务

服务在该网址上正常工作

但是当我在json中使用该url时无法正常工作。这是我的代码,它工作正常

 $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "WebService.asmx/getlinqdata",
        data: '{}',
        dataType: "json",
        success: function (jsonText) {

            var myObject = eval(jsonText.d);

            for (var i = 0; i < myObject.length; i++) {
                $('#main').append('<p>' + myObject[i].Id + '</p>');
                $('#main').append('<p>' + myObject[i].Name + '</p>');
                $('#main').append('<p>' + myObject[i].Day + '</p>');
                $('#main').append('<p>' + myObject[i].Month + '</p>');
                $('#main').append('<p>' + myObject[i].Year + '</p>');
                $('#main').append('<br/>');
            }


        },
        error: function (msg) {
            alert("Error: " + msg.d);
        }
    });

这对我来说很好,但是当我使用已部署的webservice url时,这个url是 http://localhost:1234/WebService.asmx/getlinqdata

getlinqdata是我调用的函数

thax

2 个答案:

答案 0 :(得分:1)

您可能会从一个域(URL)转到另一个域(即跨域),您不能按原样使用JSON,而是必须依赖JSONP。

您将查看以下参考资料。希望它为你工作

http://www.codeproject.com/KB/aspnet/Cross_Domain_Call.aspx

http://www.wictorwilen.se/Post/SharePoint-Online-and-External-Data-using-JSONP.aspx

答案 1 :(得分:0)

根据您的意见,这是我的答案:

1234是端口号而非域名。如果您知道您的问题是本地问题,那么您在1234端口(而不是80)上测试您的网站,并且在生产服务器上您在端口3456上运行它,为什么不将Web服务URL更改为适当的端口你部署到生产?

还有一个建议:

Eval is evil。如果您有更好的方法like parseJSON.

,请不要使用它
var myObject = $.parseJSON(jsonText.d);