javascript - 厌恶IE,拒绝回复JQuery Post

标签 javascript jquery post

女士们/男士们:

做一个在 Chrome 和 FireFox 中工作正常的 $.post。 IE - 没那么多......成功回调(addTicketAndRender())永远不会被击中:

http://jsfiddle.net/AeQxJ/1/

我读过一些关于需要用我的 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/

相关文章:

javascript - dataTable页长变化问题

javascript - HtmlAgilityPack.HtmlDocument Cookies

javascript - JQuery - 创建元素并将其连接到其他 html

ajax - MailChimp ajax 帖子返回 "Recipient has too many recent sign up requests"

javascript - 为什么 Chrome 间距在一个 JS 文件中有效,而在另一个 JS 文件中无效?

javascript - JS中可变时间段平滑增加数字

jQuery Masonry 固定/前置元素

javascript - HTML 脚本不加载 JavaScript 文件

php - $_POST、$_GET 和安全性

javascript - Express 服务器 - 无法发布/