【问题标题】:getJSON not working on IEgetJSON 在 IE 上不起作用
【发布时间】:2023-04-04 02:17:01
【问题描述】:
$(document).ready(function(){
  var timezone = "GMT";
  var num1 = Math.random();
  $.getJSON("http://178.79.191.15/json.php?num="+num1,
    function(data){
        console.log(data.hour);
      if (data.hour == 0 || data.hour == 1 || data.hour == 2 || data.hour == 3) {
        $('#pokerform').show();     
      } else {
        $('#wrongtime').show(); 
      }
    })
});

以上是我的函数,它在 Chrome/FF 上运行,但在 IE 中不运行。

我已经在http://178.79.191.15/json.php 上设置了header('Access-Control-Allow-Origin: *');

可能是什么问题?

【问题讨论】:

  • 您能否详细说明它是如何不工作的?你得到什么错误?
  • @Blender 没有错误,当我查看 IE 开发人员工具时,我可以看到由于某种原因它根本没有获取 JSON url。我可以看到它从谷歌下载 jquery,但之后什么也没有
  • @Click Upvote 这就是我使用 num1 的原因
  • @hoverhand 我不认为jQuery在IE中支持跨域Ajax请求。

标签: jquery json


【解决方案1】:

你有几个问题:

对于 JavaScript,您应该使用 === 而不是 ==,尤其是在检查值 0 时。您还缺少一个分号来结束您的 $.getJSON();

这是修改后的代码:

$(document).ready(function() {
    var timezone = "GMT",
        num1 = Math.random()
    ;
    $.getJSON("http://178.79.191.15/json.php?num=" + num1, function(data) {
        console.log(data.hour);
        if (data.hour === 0 || data.hour === 1 || data.hour === 2 || data.hour === 3) {
            $('#pokerform').show();
        } else {
            $('#wrongtime').show();
        }
    });
});​

【讨论】:

  • 你知道JSON数据默认都是字符串吗?因此,他必须先对其进行 parseInt() 才能使用 === 将其与整数进行比较
  • 虽然我理解你为什么这么认为,但实际上你在技术上是错误的,因为 JSON 可以区分值类型。阅读价值:json.org
  • 奇怪,每当我将某些内容从我的 php 传递到 JSON 时,它似乎会将所有内容都转换为字符串。可能只是它的 php 的 json_encode 函数
  • 或者可能只是从数据库中获取的数据,即使它们是整数,php也会将它们视为字符串,因此它们在我的代码中被转换为字符串
  • 是的,这就是我理解你为什么会有这种印象的原因,因为大多数语言和存储设备默认将 JSON 视为字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 2016-03-26
  • 2013-08-19
  • 2014-06-23
相关资源
最近更新 更多