【问题标题】:Error on my jquery ajax json function, wont return data我的 jquery ajax json 函数出错,不会返回数据
【发布时间】:2011-08-08 11:14:19
【问题描述】:

嗨,我在使用 json 检索数据的 ajax 函数上遇到了这个错误。它不会返回任何数据。下面是我的代码

$.ajax({
  url: "php/getCategory.php?action=getyear",
  cache: false,
  dataType: "json",
  success: function(data){
    $.each(data.items, function(i,item){
        $("#catYear").append('<option value="'+item.id+'">'+item.name+'</option>');
    });
  }
});

当我尝试删除 dataType: "json" 时,它将传递给 success: function。我认为问题出在我的json上。我还回显了我的 getCategory.php 的输出,我认为它们没有问题。下面是我的 php json_encode 的输出。

{items:[{"id":"1","name":"2010"},{"id":"2","name":"2011"}]}

谢谢!

【问题讨论】:

  • PHP 输出是否带有 JSON 标头?
  • @dotty ...你是什么意思,对不起,我是新来的......你能给我举个例子吗?谢谢!
  • @dotty...我正在使用 json_encode。我认为没有必要把它放在我的标题上。我说的对吗?
  • 你应该用jsonlint.com检查你的JSON——它是无效的。
  • json_encode 会给你一大块 JSON。你仍然需要说 header('content-type: application/json'); 否则 PHP 会声称它正在发送一个 HTML 文档。

标签: javascript jquery ajax json


【解决方案1】:

来自 jquery 文档:

重要提示:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误,请求通常会静默失败。因此,请避免频繁手动编辑 JSON 数据。 JSON 是一种数据交换格式,其语法规则比 JavaScript 的对象文字表示法更严格。例如,所有以 JSON 表示的字符串,无论是属性还是值,都必须用双引号括起来。有关 JSON 格式的详细信息,请参阅http://json.org/

所以 jour json 字符串有没有双引号的元素项尝试类似的东西:

{"items":[{"id":"1","name":"2010"},{"id":"2","name":"2011"}]}

【讨论】:

  • 这就是我第一次遇到这个问题的原因。我以前的 jquery 版本是 1.3+。这是我第一次改成1.4。
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2016-09-16
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多