在 chrome 和 firefox 中响应为空
Posted
技术标签:
【中文标题】在 chrome 和 firefox 中响应为空【英文标题】:response is null in chrome and firefox 【发布时间】:2012-11-09 09:40:54 【问题描述】:我想使用 javascript 调用休息服务。我的代码是:
function CreateXMLHttpRequest()
if (typeof XMLHttpRequest != "undefined")
alert("1");
return new XMLHttpRequest();
else if (typeof ActiveXObject != "undefined")
alert("2");
return new ActiveXObject("Microsoft.XMLHTTP");
else
throw new Error("XMLHttpRequestnot supported");
function CallWebService()
var objXMLHttpRequest = null;
objXMLHttpRequest = CreateXMLHttpRequest();
objXMLHttpRequest.open("POST", "http://localhost:2546/abc.svc/json/GetXml", true);
objXMLHttpRequest.setRequestHeader("Content-Type", "application/xml;charset=UTF-16");
var packet = '<CompanyRequest xmlns="http://schemas.datacontract.org/2004/07/abc.DomainModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><CompanyName>company</CompanyName></CompanyRequest>';
objXMLHttpRequest.send(packet);
alert(packet);
var d =(objXMLHttpRequest.responseText);
alert(d);
它在 IE 中运行良好,但在 Firefox 和 chrome 中响应为空。我不明白出了什么问题。我一直在寻找这个3天。 让我知道是否有任何错误。
提前谢谢....
【问题讨论】:
【参考方案1】:您正在进行异步调用。尝试使用回调。
function CreateXMLHttpRequest()
if (typeof XMLHttpRequest != "undefined")
return new XMLHttpRequest();
else if (typeof ActiveXObject != "undefined")
return new ActiveXObject("Microsoft.XMLHTTP");
else
throw new Error("XMLHttpRequestnot supported");
function CallWebService()
var objXMLHttpRequest = CreateXMLHttpRequest();
objXMLHttpRequest.open("POST", "http://localhost:2546/abc.svc/json/GetXml", true);
objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml");
var packet = '<CompanyRequest xmlns="http://schemas.datacontract.org/2004/07/abc.DomainModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><CompanyName>company</CompanyName></CompanyRequest>';
objXMLHttpRequest.onreadystatechange = function ()
if (objXMLHttpRequest.readyState==4 && objXMLHttpRequest.status==200)
alert(objXMLHttpRequest.responseText);
objXMLHttpRequest.send(packet);
【讨论】:
你得到的错误是什么?你在服务器端获取xml吗? 没有显示错误?只是空警报框...它在 IE 中工作,但在 chrome 和 firefox 中不工作 尝试将 Content-Type 设置为“text/xml”。在 CallWebservice 函数中查看修改后的代码。 我无法理解原因。你可以通过 sathishp123@gmail.com 联系我 我回复了你的身份证。检查一下。【参考方案2】:您正在执行异步请求。
尝试做一个同步请求,比如
objXMLHttpRequest.open("POST", "http://localhost:2546/abc.svc/json/GetXml", false);
或异步
objXMLHttpRequest.onreadystatechange = function ()
if ( objXMLHttpRequest.readyState == 4 )
alert(req.responseText);
;
并将标题设置为:
试试这个:
objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml");
objXMLHttpRequest.setRequestHeader( "SOAPAction", "http://localhost:2546/abc.svc/json/GetXml" );
【讨论】:
这行得通。但在响应到来之前,它会冻结 UI 执行任何其他操作。 @Vidhya:对不起。刚写了一个原始代码。我总是为 XMLHttpRequest 使用变量名“req”。已更新。 没有显示错误?只是空警报框...它在 IE 中工作,但在 chrome 和 firefox 中不工作 你试过同步吗?使用我的第一个选项进行测试。如果警告框仍然是空的,那么您可能需要检查您的服务器端代码。 试试这个:objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml"); objXMLHttpRequest.setRequestHeader("SOAPAction", "localhost:2546/abc.svc/json/GetXml");以上是关于在 chrome 和 firefox 中响应为空的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 54 没有从我的网站获得 HTTPS 响应; Chrome 53、Chromium、Firefox 和 Safari 都可以
jquery $.ajax 在 Chrome 或 Firefox 中调用会导致 401 未经授权的响应,但在 IE 中有效
Firefox 开发者工具截断长网络响应,Chrome 不显示
为啥条件块中的函数声明在 Chrome 而不是 Firefox 中提升到函数范围?