【问题标题】:Browser doesn't stop loading with jQuery $.get浏览器不会停止使用 jQuery $.get 加载
【发布时间】:2011-03-20 03:36:51
【问题描述】:

我使用下面的 jQuery (1.4) 代码来测试 cookie 是否被接受:

$.get("http://localhost:8080/cookietester/cookietester", function(data) {
    if (data == "false")
        document.write("Activate cookies!");
    else if(data == "true")
        document.write("ok");
});

但浏览器会发出信号,表明它不会停止页面加载。 Google Chrome 5 无法正确执行脚本,也不显示任何内容。

这段代码有问题吗?

【问题讨论】:

  • 检查调试控制台 - 您可能会收到非 200 响应代码。该回调仅在成功时调用。
  • URL 会导致重定向,但 jQuery 会正确处理并显示“ok”。但似乎浏览器仍在加载。调试控制台不报bug,重定向后状态码为200。

标签: javascript jquery ajax browser google-chrome


【解决方案1】:

在那种情况下你不能使用document.write(实际上我尽可能避免使用它),而是使用.append()<body>添加一条消息,如下所示:

$.get("http://localhost:8080/cookietester/cookietester", function(data) {
  if (data == "false")
    $(document.body).append("Activate cookies!");
  else if(data == "true")
    $(document.body).append("ok");
});

或者,你可以提醒它:

$.get("http://localhost:8080/cookietester/cookietester", function(data) {
  if (data == "false")
    alert("Activate cookies!");
  else if(data == "true")
    alert("ok");
});

【讨论】:

  • 就是这样!这个小小的改动解决了所有问题,甚至 Chrome 也能正常工作。
【解决方案2】:

不要在那里打电话给document.write

页面加载完成后调用document.write会重置页面,这不是你想要的。

改为使用 jQuery 设置元素的text()

【讨论】:

    【解决方案3】:

    可能还有其他 javascript 代码仍在运行?

    【讨论】:

    • 不,页面上只有这个脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多