女士们/男士们:
做一个在 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,我可以看到 POST 在从 http://jsfiddle.net/AeQxJ/3// 运行下面的代码时消失了.在 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
最佳答案
改变
$.post( ...
cache: "false"
...
收件人:
$.ajax(...
cache: false,
...
注意,第一个缓存的是一个无意义的字符串,而后面的是一个 bool 值false。
关于javascript - 厌恶IE,拒绝回复JQuery Post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897317/