【问题标题】:Jquery Ajax method error with asp.net web service on a remote server subdomain远程服务器子域上的 asp.net Web 服务的 Jquery Ajax 方法错误
【发布时间】:2012-07-09 21:51:55
【问题描述】:

我创建了一个项目,它是一个 asp.net 项目,它有一个 Service1.asmx,我把这个项目托管到远程服务器上,就像一个子域 (myservice.test.com/Service1.asmx ) 并且我正在使用 jquery ajax 方法从 asp.net 应用程序调用此 Web 服务。此应用程序位于同一远程服务器上,当我调用 admin.test.com/Default.aspx(此页面使用 Web 服务 abow)时,我将其托管为子域(admin.test.com)我用 chrome 控制台查看了这个错误的错误,它说:*(Access-Control-Allow-Origin 不允许。)*4444

GET_CAT_ALL: function (userId, callback, callback_err) {
    try {
        $.ajax({
            type: "POST",
            url: myservice.test.com/Service1.asmx + "/GET_CAT_ALL",
            data: "{userId:" + userId + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d == "0" || msg.d.length == 0 || msg.d == null) {
                    if (typeof callback == 'function') {
                        callback(null);
                    }
                }
                else if (msg.d <= 0) {
                    if (typeof callback_err == 'function') {
                        callback_err(msg.d, msg, 'GET_CAT_ALL');
                    }
                }
                else {
                    var _data = eval("(" + msg.d + ")");
                    if (typeof callback_err == 'function' && _data[0] != null && typeof _data[0].ErrorCode != 'undefined') {
                        callback_err(_data, msg, 'GET_CAT_ALL');
                    }
                    else if (typeof callback == 'function') {
                        callback(_data);
                    }
                }
            },
            error: function (msg) {
                if (typeof callback_err == 'function') {
                    callback_err(-1, msg, 'GET_CAT_ALL');
                }
            }
        });
    }
    catch (err) {
        if (typeof callback_err == 'function') {
            callback_err(-2, err, 'GET_CAT_ALL');
        }
    }
},

【问题讨论】:

标签: asp.net ajax web-services jquery


【解决方案1】:

这意味着您的主体受浏览器设置的 Cross Side 限制。如果可以尝试解决此问题,或者如果您可以保证您的用户正在使用更新的浏览器,则可以考虑使用 JSONP,您可以通过在 Web 服务器上使用标头来解决它。看看关于它的mozilla document

【讨论】:

  • 您是否将输出格式和 ajax 对象都切换为使用 JSONP?
  • 好的,这就是您的 JSON AJAX 请求代码,但是您是否更改了服务器以发送 JSONP 代码而不是 JSON 代码?
  • 我怎么能做到这一点?它是主机上的远程服务器
  • 如果您无权访问远程服务器,那么恐怕您运气不好,您必须要求远程服务器提供商支持 JSONP 或编辑 Access-Control-Allow -Origin 标头限制较少。
  • plesk面板有什么办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多