Javascript 在chrome和firefox中响应为空
我想使用javascript调用rest服务。我的代码是:Javascript 在chrome和firefox中响应为空,javascript,xml,wcf-rest,Javascript,Xml,Wcf Rest,我想使用javascript调用rest服务。我的代码是: function CreateXMLHttpRequest() { if (typeof XMLHttpRequest != "undefined") { alert("1"); return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined") { alert("2"); return
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);
}
函数CreateXMLHttpRequest(){
if(XMLHttpRequest的类型!=“未定义”){
警报(“1”);
返回新的XMLHttpRequest();
}
else if(ActiveXObject的类型!=“未定义”){
警报(“2”);
返回新的ActiveXObject(“Microsoft.XMLHTTP”);
}
否则{
抛出新错误(“不支持XMLHttpRequest”);
}
}
函数CallWebService(){
var objXMLHttpRequest=null;
objXMLHttpRequest=CreateXMLHttpRequest();
objXMLHttpRequest.open(“POST”http://localhost:2546/abc.svc/json/GetXml“,对);
setRequestHeader(“内容类型”,“应用程序/xml;字符集=UTF-16”);
var数据包=‘公司’;
objXMLHttpRequest.send(数据包);
警报(数据包);
var d=(objXMLHttpRequest.responseText);
警戒(d);
}
它在IE中运行良好,但在Firefox和chrome中响应为空。我不明白出了什么问题。我已经找了三天了。
如果有任何错误,请告诉我
提前感谢….您正在执行异步请求 尝试执行同步请求,如
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" );
您正在进行异步调用。尝试使用回调函数
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);
}
函数CreateXMLHttpRequest(){
if(XMLHttpRequest的类型!=“未定义”){
返回新的XMLHttpRequest();
}else if(ActiveXObject的类型!=“未定义”){
返回新的ActiveXObject(“Microsoft.XMLHTTP”);
}否则{
抛出新错误(“不支持XMLHttpRequest”);
}
}
函数CallWebService(){
var objXMLHttpRequest=CreateXMLHttpRequest();
objXMLHttpRequest.open(“POST”http://localhost:2546/abc.svc/json/GetXml“,对);
setRequestHeader(“内容类型”,“text/xml”);
var数据包=‘公司’;
objXMLHttpRequest.onreadystatechange=函数(){
if(objXMLHttpRequest.readyState==4&&objXMLHttpRequest.status==200){
警报(objXMLHttpRequest.responseText);
}
}
objXMLHttpRequest.send(数据包);
}
这将起作用。但它会冻结用户界面,使其无法执行任何其他操作,直到收到响应为止。@Vidhya:对不起。只是写了一段原始代码。我总是对XMLHttpRequest使用变量名'req'。更新。没有显示错误?只是空警报框…它在IE中工作,但在chrome和Firefox中不工作。您是否尝试同步执行此操作?使用我的第一个选项进行测试。如果警报框仍然为空,则可能需要检查服务器端代码;objXMLHttpRequest.setRequestHeader(“SOAPAction”,即“”);你犯了什么错误?在服务器端获取xml?没有显示错误?只是空警报框…它在IE中工作,但在chrome和firefoxTry中不工作。请将内容类型设置为“text/xml”。检查CallWebservice函数中编辑的代码。我无法理解原因。你可以随时打我sathishp123@gmail.comI回复你的身份证。检查一下。