gpt4 book ai didi

JQuery Ajax POST 请求到远程 Web 服务

转载 作者:行者123 更新时间:2023-12-01 07:20:57 25 4
gpt4 key购买 nike

我怎么也想不通,情况如下:

我正在调用不在同一台计算机上的 Web 服务上的方法,并在我的脚本中使用以下 JS 片段:

$.ajax({
type: "POST",
url: "http://" + gServer + "/xawebservice/xawebservice.asmx/" + webMethod,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
async: false,
data: WSParameters,
success: function callFunction(result) { processResults(result, pType, pParam1); },
error: function (xhr, status, error) {
alert(error.toString());
//alert(xhr.toString());
}
});

参数没问题,经过测试,web方法也是正确的。

作为错误消息,我得到以下信息:

  • Firefox:[异常...“失败”nsresult:“0x80004005 (NS_ERROR_FAILURE)”位置:“JS 框架::http://localhost:7515/jquery-1.8.3.js::::第 8434 行”数据:否]
  • Chrome:错误:NETWORK_ERR:XMLHttpRequest 异常 101
  • IE8:无传输

如果我在同一台计算机上运行的 Web 服务上使用相同的代码片段,则没有问题。如果我通过 Web 界面使用远程 Web 服务,它也可以正常工作。

PS:我用谷歌搜索了一下,有些页面推荐了一些跨域参数,但这也不起作用。不幸的是,我猜使用相对路径是行不通的。

感谢您提前所做的努力。

Brvm370

更新:好吧,我更新了代码以基于现有的请求执行 CORS 请求,但收到错误 500,直接在服务器上执行请求工作正常,并且 CORS 已在服务器上激活。

function xenappRequest(pType, pParam1) {

// CORS request
var url = "http://" + gServer + "/webservice/webservice.asmx/webMethod";
var params = { "appName": pParam1 };
var xhr = createCORSRequest("POST", url);
if (!xhr) {
alert('CORS not supported');
} else {
// Do the request
// Response handlers.
xhr.onload = function () {
//var text = xhr.responseText;
alert('Response from CORS request to ' + url + ': ' + xhr.response);
};
xhr.onerror = function () {
alert('Woops, there was an error making the request.');
};
xhr.send(JSON.stringify(params));
}

}

function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Check if the XMLHttpRequest object has a "withCredentials" property.
// "withCredentials" only exists on XMLHTTPRequest2 objects.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// Otherwise, check if XDomainRequest.
// XDomainRequest only exists in IE, and is IE's way of making CORS requests.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// Otherwise, CORS is not supported by the browser.
xhr = null;
}
return xhr;

}

从 FF 我得到错误 500,在 IE8 中,请求落在 xhr.onerror 子句中...有什么想法吗?

最佳答案

Same Origin Policy正在这里发挥作用。您无法与其他域通信。这是为了保护您的隐私,因此某些网页无法与您的电子邮件、银行帐户等进行通信。

如果其他域支持 CORS ,只要浏览器支持,您就可以发出此类请求。如果不支持 CORS,则必须使用本地代理或 JSONP 请求 [服务器也必须支持 JSONP。]

关于JQuery Ajax POST 请求到远程 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com