0

以下 ajax 调用在 Chrome/FF 中运行良好,但仅在 IE 中失败。我试过关闭缓存、物理/相对路径、异步打开和关闭,但没有任何运气。我整个早上都在 SO 中四处游荡,寻找和测试不同的解决方案,但我仍然没有任何运气。

返回的错误代码不是很有帮助: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)
                    } 
                });




            }
4

2 回答 2

0

这个答案是为了简单地突出 OP 问题中评论的最终结果:

webServiceURL与脚本在同一个域中,因此crossDomain: true,是不必要的。

data: soapMessage,也可能导致问题,因为 AJAX 指定了 POST,但soapMessage它是一个 XML 字符串,它被转换为附加到 URL 的查询字符串。

于 2013-11-14T20:33:39.250 回答
0

使用 ie,您需要在请求中附加某种随机参数。

我通常使用类似的东西(new Date()).getTime()作为远程应用程序不使用的参数名称的值。

这会欺骗 ie 每次都认为这是一个新请求。

编辑:发现一个类似的问题添加链接。

这个答案比我更好地解释它,它还包含一个 jquery 解决方案。(从链接的答案复制,所以信用在那里。)

$.ajaxSetup({ cache: false });
于 2013-11-14T18:15:41.750 回答