どういうわけか理解できません、状況は次のとおりです。
同じマシン上にない 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: 少しググったところ、いくつかのページでクロス ドメイン パラメータが推奨されていましたが、これも機能しませんでした。残念ながら、相対パスを使用してもうまくいきません。
事前にご協力いただきありがとうございます。
Br vm370
更新: 既存のコードに基づいて 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 句に含まれます...