2013-09-05 46 views
0

我从JavaScript调用SOAP WebService。在IE中,我的代码工作,但在Firefox上,错误函数被调用textStatus =“error”,xhr.status = 0,errorThrown为空。我尝试了不同的答案,发现在SO上,但无法解决问题。jQuery.ajax调用适用于IE,但在Firefox上失败

jQuery.support.cors = true; 
    jQuery.ajax({ 
     url: serviceUrl, 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader("SOAPAction", soapAction); 
     }, 
     type: "POST", 
     dataType: "xml", 
     data: soap, 
     success: function(data, textStatus, jqXHR) { 
      // report success 
      success.style.display='block'; 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      // report error 
      fail.style.display='block'; 
      alert(textStatus + ": " + jqXHR.status + "/" + errorThrown); 
     }, 
     contentType: "text/xml; charset=utf-8" 
    }); 

Browserversions:IE 9,火狐23.0.1

+1

是否有任何错误记录到Firefox的开发者控制台? – phuzi

+0

我检查了Web开发人员错误控制台,没有错误... – Hinek

回答

0

这是因为相同的起源政策。你不能使用ajax来调用外部网站。如果你真的想使用,你必须使用JSONP。或者你可以使用serverside代理。意味着,在服务器端调用外部站点,并对该web服务执行ajax调用。

+0

我试过使用dataType:“JSONP”,但它未能textStatus =“parsererror”,xhr.status = 200和errorThrown =“错误:jQuery17208070102435807937_1378381185457未被调用“ – Hinek

+0

通过使用完整事件并检查状态值来解决parsererror。例如: complete:function(xhr,status){if(status ==='error'||!xhr.responseText)handleError(); } 其他{ var data = xhr.responseText; // ... } }试试这个 – Suhas

+0

对不起,我不认为我理解,你能详细说明一些吗? – Hinek

相关问题