我正在用HTML编写一个项目,仅限JavaScript。 我有一个从Web服务(.asmx)获取数据的功能,它工作正常。但在Firefox中,Chrome无法正常工作。以下是代码,请验证:
function CreateXMLHttpRequest()
{
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
else {// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function CallWebService() {
var objXMLHttpRequest = CreateXMLHttpRequest();
objXMLHttpRequest.open ("POST",
"http://www.xxxxxxxxx.com/WebServicesp/WebMethods.asmx",
false);
objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
var packet='<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body></soap:Body></soap:Envelope>';
objXMLHttpRequest.send(packet);
var res=objXMLHttpRequest.responseText;
alert(res);
}
答案 0 :(得分:1)
试试这段代码:
function CallService() {
jQuery.support.cors = true;
$.ajax({
type: "POST",
url: "url/Service1.asmx/servicename",
dataType: "json",
data: "{}",
contentType: "application/json; charset=utf-8",
success: OnSuccess,
error: OnError
});
}
function OnSuccess(data, status) {
alert("success");
alert(data.d);
}
function OnError(request, status, error) {
alert(status);
}
$(document).ready(function () {
CallService();
});
答案 1 :(得分:0)
你可能会收到关于跨域ajax请求的js错误,在这种情况下,它可以在Internet Explorer中正常工作,但在其他浏览器上却没有,因为IE不会强制执行跨域安全策略。登记/>
这有助于您了解跨域Cross-domain error
如果是这种情况你需要tr JSONP或curl来获取数据
希望能帮助到你
你可以从firebug控制台发布错误信息吗?
答案 2 :(得分:0)
html页面是否与webservice的端点url在同一个域中提供?如果不是,那么其他人在此处指出的是跨域违规问题。检查是否有任何javascript错误。
答案 3 :(得分:0)
我会尝试安装名为篡改数据的插件 https://addons.mozilla.org/en-US/firefox/addon/tamper-data/?src=search
或称为fiddler的软件 http://fiddler2.com/fiddler2/
这些将显示实际的请求和响应,因此如果有任何请求,您将能够在实际请求中找到问题。