以下ajax调用在Chrome / FF中运行正常,但仅在IE中失败。 我试过打开缓存,物理/相对路径,打开和关闭异步,但没有运气。我整个上午一直在寻找和测试不同的解决方案,但我仍然没有运气。
返回的错误代码不是非常有用:error undefined
任何想法?
function CreateCard(//a bunch of paramaters//){
var soapMessage ='//big long soap string goes here//';
var webServiceURL="//consumption URL (relative)";
$.ajax({
url: webServiceURL,
type: "POST",
crossDomain: true,
dataType: 'xml',
data: soapMessage,
processData: false,
contentType: "text/xml; charset=\"utf-8\"",
success: function(data, status, req, xml, xmlHttpRequest, responseXML) {
var newCardID=$(req.responseXML).find('AddeCardRequestResult').text(); //Fetches new card id
$('div#debug').html("success: " + newCardID)
$('#CID').val(newCardID);
__doPostBack('btnSubmit', newCardID);
},
error: function(xhr, msg) {
$('div#debug').html(msg + '\n' + xhr.responseText)
}
});
}
答案 0 :(得分:0)
使用ie,您需要在请求中添加某种随机参数。
我通常使用(new Date()).getTime()
之类的东西作为远程应用程序未使用的参数名称的值。
这会欺骗,即每次都认为这是一个新请求。
修改:找到类似的question添加链接。
这个answer比我更好地解释它,它还包含一个jquery解决方案。 (从链接的答案复制,所以信用就到那里。)
$.ajaxSetup({ cache: false });
答案 1 :(得分:0)
这个答案只是为了突出OP问题中评论的最终结果:
webServiceURL
与脚本位于同一个域中,因此不需要crossDomain: true,
。
data: soapMessage,
可能也会导致问题,因为AJAX指定了POST,但soapMessage
是一个XML字符串,会转换为附加到URL的查询字符串。