2012-11-19 26 views
1

我在访问.net webmethod从与存储Web服务不同的服务器上遇到问题。.Net Web方法访问

$.ajax({ 
    type: "POST", 
    url: "WebService.asmx/login", 
    data: "{'username':'test'," + "'password':'test'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     console.log(msg); 
    }, 
    error: function (response) { 
     console.log(response); 
    } 
}); 

当执行上述jQuery时,该方法按预期运行。如果我在其他服务器上运行相同的代码并将url更改为存储位置,则webmethod不会显示执行。 Firebug显示错误,但我无法确定原因。如果我导航到WebService.asmx该方法列出,但我似乎无法访问它。

+1

请....永远不要在你的生活中使用字符串方法创建JSON。总是使用'JSON.stringify()'! – ThiefMaster

+0

您发送无效的JSON(JSON需要双引号)。这可能会破坏事情。 – ThiefMaster

回答

0

如果我运行在不同的服务器上相同的代码,并更改URL,以存储在何处?

如果您要改变它到另一个域上的URL,它将违反浏览器的跨域沙箱而不起作用。您所做的调用需要与服务页面/脚本的域名相同。

+0

这很明显 - 不能相信我没有想到这一点。一个JavaScript错误本来会很好,这样我可以节省几个小时的头部划痕。谢谢。在javascript之外,我应该可以从其他服务器运行此方法吗? – user1836732

+0

是的,假设会话状态等事情不在图片中。 – lukiffer

+1

尽管我没有意识到使用“ASMX”Web服务的任何实现,但它只需要几个WCF配置更改(仅限.NET 4.0 +)来运行支持跨域调用的JSONP Web服务。 http://msdn.microsoft.com/en-us/library/ee834511.aspx – Snixtor