【问题标题】:Internet Explorer and JQuery/AJAX $.get() not workingInternet Explorer 和 JQuery/AJAX $.get() 不工作
【发布时间】:2012-02-23 17:50:20
【问题描述】:

我正在尝试让 IE8(和其他 IE)与使用 JQuery/AJAX $.get() 方法来显示来自外部 php 文件的值的页面一起工作。 Firefox、Chrome 和 Safari 都可以正常工作。我把我的大问题归结为这个小例子

这是javascript代码:

function get_number () {
    $.get(
        "test5.php",
        {},
        function (response) {
             var number = (response.number);
             $("#number_display").html(number);
        },
        "json"
    )
}

$(document).ready(function(){
    $('#get').click(function(){
       get_number ();
    });
})

它会插入到下面的 html 元素中:

<body style='text-align:center;'>
<p>Number = <span id='number_display'></span></p>
<button id='get'>Get Number</button>

这是外部php代码:

$num = rand (1,10);
$result = array();
$result['number'] = $num;
echo json_encode($result);

我的 jquery 库源是 http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js,如果这很重要的话。

非常感谢您的帮助!

【问题讨论】:

  • 我应该包含以下行为:其他浏览器允许我一遍又一遍地单击按钮并每次显示一个数字。 IE 只允许单击一次,然后停留在该结果上。

标签: jquery ajax internet-explorer-8 get


【解决方案1】:

您缺少两个分号,IE 会阻塞。我还格式化了您的代码并进行了一些其他调整:

function get_number() {
    // Append a "random" number to the query string to prevent caching:
    $.get("test5.php", { num: Math.random() }, function(response) { 
    // If you don't want to pass any data, you can omit the "data" parameter
        var number = response.number;
        $("#number_display").html(number);
    }, "json"); // <--- 
}

$(document).ready(function() {
    $('#get').click(function() {
        get_number();
    });
}); // <---

编辑:在您发表评论后,您很可能遇到了缓存问题——IE 可能会积极缓存GET 请求。要解决这个问题,您可以append a parameter to your request that will force IE to hit the server again

【讨论】:

  • @user1181638:没问题!很高兴帮助:)
【解决方案2】:

与 IE 中的 load() 相同。 我相信两个引号也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 2012-01-04
    • 2012-02-01
    • 2011-11-05
    • 2013-08-22
    • 2012-07-31
    • 1970-01-01
    • 2012-06-07
    相关资源
    最近更新 更多