【发布时间】:2012-06-05 12:28:56
【问题描述】:
女士/男士:
做一个在 Chrome 和 FireFox 中运行良好的 $.post。 IE - 没那么多...成功回调(addTicketAndRender())永远不会被击中:
我读过一些关于需要通过我的 POST 对 IE 执行“缓存清除”的内容,但我对这些东西比较陌生,所以不知道这是否适合尝试,如果是,如何做。
来源:
function addTicketAndRender(incomingTicket) {
console.log("Add and Render");
alert(incomingTicket);
}
$(document).ready(function() {
console.log('ready');
// variables to feed trusted ticket retrieval
var trustedURL = "http://tableau.russellchristopher.org/trusted",
userName = "foo",
serverURL = "http://tableau.russellchristopher.org/";
$.post(trustedURL, {
username: userName,
server: serverURL,
client_ip: "",
target_site: "",
cache: "false"
}, function(response) {
addTicketAndRender(response);
});
});
请帮忙?
更新 1: 将其切换为 ajax 帖子:没有区别。在 Chrome 和 Firefox 上仍然很好,在 IE 中仍然死机:
$.ajax( {
url : trustedURL,
type: "POST",
data : {
username : userName,
server : serverURL,
client_ip : "",
target_site : ""
},
cache : false
} ).done( addTicketAndRender );
更新 2: 集成了额外的缓存清除技术。相同的行为 - Chrome/FF 工作,IE 没有任何东西 - 使用 Fiddler,我可以看到从 http://jsfiddle.net/AeQxJ/3// 运行下面的代码时 POST 出去了。在 IE 中,这永远不会发生。在 jsfiddle 之外测试并看到相同的结果。下一步:通过在我没有触及浏览器设置的盒子上进行测试,排除我愚蠢的 IE 浏览器设置。
function addTicketAndRender(incomingTicket){
alert(incomingTicket);
}
$(document).ready(function() {
// variables to feed trusted ticket retrieval
var trustedURL = "http://tableau.russellchristopher.org/trusted",
userName = "foo",
serverURL = "http://tableau.russellchristopher.org/";
var number=Math.floor(Math.random()*1);
$.ajax( {
url : trustedURL + "?" + number,
type: "POST",
data : {
username : userName,
server : serverURL,
client_ip : "",
target_site : ""
},
cache : false
} ).done( addTicketAndRender );
});
更新 4: 排除了我的 IE 副本作为问题。在 POST 中添加了错误捕获代码,并且只有在 IE 中运行时,我才会看到这个抛出:
error: function(xhr, textStatus, error){
alert(xhr.statusText);
alert(textStatus);
alert(error);
//output:
// xhr.StatusText: No Transport
// testSttus: Error
// error: No Transport
搜索“IE No Transport jquery POST”将我带到这里:
jQuery Call to WebService returns "No Transport" error
帖子表示添加jQuery.support.cors = true;应该可以解决问题,但是当我这样做时,会返回错误:
//output:
// xhr.StatusText: Error: Access is denied
// testSttus: Error
// error: Error: Access is denied
【问题讨论】:
-
您是否尝试检查 error() 值以查看抛出了什么?
-
你有没有尝试使用jQuery.ajax函数和错误方法来查看错误信息是什么?由于违反了同源政策,您可能需要使用jsonp。
-
等等,为什么它在 chrome 和 firefox 中都有效?同源政策发生了什么?
-
哦,顺便说一句,它可以在 IE10 中运行...
-
我建议在您的 $.ajax 尝试中添加一个错误处理程序,看看返回的异常是什么。
标签: javascript jquery post