【发布时间】:2010-10-01 13:50:30
【问题描述】:
我无法从 jQuery 函数调用 Web 服务(asmx)。
调用网络服务时出现“拒绝访问”错误。它在开发和本地机器上工作,但我得到了同样的错误。
这是我的ajax调用
$.ajax({
type: "POST",
url: "http://server.com/calculator.asmx/calculus",
data: "{ 'userID': '" + $("#usrid").val() + "','password': '" + $("#password").val() + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: Success,
error: Error
});
我的网络服务是
[WebService(Namespace = "http://www.company.com/webservices/calculus")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class calculator : System.Web.Services.WebService
{
[WebMethod]
[System.Web.Script.Services.ScriptMethod(UseHttpGet=false, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public bool calculus(string userName, string password)
{// my code}
错误在http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 函数和 e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async) 处的“访问被拒绝”错误;
我已将 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 包含在 http://forums.asp.net/p/1570168/3935094.aspx 中所示的类中,但无法修复问题。谁能帮我解决这个问题。
谢谢
【问题讨论】:
-
网络服务是否在另一个域中?
-
同意@Nick,听起来(和看起来)像一个跨域问题
-
我不确定,但是使用 dataType 'json' 你的数据不应该是一个对象而不是一个字符串吗?
-
是的。另一个域中的 Web 服务。它实际上在本地服务器上工作,但不是来自任何客户端网络浏览器。