【问题标题】:calling asmx web service from jQuery从 jQuery 调用 asmx Web 服务
【发布时间】: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 服务。它实际上在本地服务器上工作,但不是来自任何客户端网络浏览器。

标签: asp.net jquery asmx


【解决方案1】:

AJAX 调用绑定到same origin policy,这意味着您不能调用位于不同域中的 Web 服务。浏览器将简单地丢弃请求。一种可能的解决方案是在同一个域上编写一个服务器端脚本,作为连接实际 Web 服务的桥梁,然后调用该脚本。

【讨论】:

  • 谢谢达林。我想出了问题。这是跨域问题。但现在问题是从 IE 调用 web 服务工作正常,但从 mozilla 或 chrome 都没有。当我提供直接 url 但它不再从 jQuery 调用时,我可以看到 web 方法和所有内容
【解决方案2】:

JSONP 是解决“同源策略”(又称跨站点脚本或 XSS)限制的一种可能方法。它有自己的一系列挑战(例如,它仅适用于 GET 模式请求),因此它肯定不是万能的。但可能值得你花时间看看。有大量关于它的 stackoverflow 帖子,应该可以帮助您入门。

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多