【问题标题】:getJSON gives statut 200 but no valuegetJSON 给出 statut 200 但没有价值
【发布时间】:2015-07-15 17:56:19
【问题描述】:

我发现了十几个关于这个问题的问题,但似乎没有一个解决方案对我有帮助。

我有一段创建 JSON 对象的 PHP 代码,基本上我的页面如下所示:

<?php
    $supps = ...; /* mysqli class that gets the values */
    header("Content-type: text/javascript");
    echo json_encode( $supps );
?>

当转到页面feed.php?load&amp;menu_id=2时,它会显示对象:

[{"id":32,"name":"Test 4","weight":15},{"id":33,"name":"Test 5","weight":25},{"id":34,"name":"Test 6","weight":35}]

通过JSONlint validator 运行它会给我这个(有效!)结果

[
    {
        "id": 32,
        "name": "Test 4",
        "weight": 15
    },
    {
        "id": 33,
        "name": "Test 5",
        "weight": 25
    },
    {
        "id": 34,
        "name": "Test 6",
        "weight": 35
    }
]

现在我正在尝试使用 JQuery 函数加载这些数据(基于从表单中选择的值)。我尝试了多段代码:

/* Try 1 */
var menuID = $('[name=menu]:checked').val();
$.getJSON("feed.php?load&amp;menu_id="+menuID, function(json) {
    console.log(json);
});

/* Try 2 */
var menuID = $('[name=menu]:checked').val();
$.ajax({
    url: "feed.php?load&amp;menu_id"+menuID,
    dataType: "JSON",
    success: function(json){
          console.log(json);
    }
})

/* Try 3 */
var menuID = $('[name=menu]:checked').val();
$.getJSON("feed.php?load&amp;menu_id="+menuID, function(data) {
    console.log(data);
}).done(function(xhr) {
    console.log(xhr)
});

/* Try 4 */
var menuID = $('[name=menu]:checked').val();
$.ajax({
    type: "GET",
    url: "feed.php?load&amp;menu_id="+menuID,
    async: false,
    dataType: "json",
    success: function(data){
        console.log(data);
    }
});

每次尝试都会在控制台中给我相同的结果:

GET http://.../feed.php?load&amp;menu_id=1 200 OK 51ms

但控制台中没有对象。

我在这里做错了什么?

【问题讨论】:

  • 当您发出警报而不是 console.log 时会发生什么。只是好奇。
  • @ODelibalta,尝试了第 1 次和第 4 次尝试,没有任何反应(没有显示警报)。
  • 能否检查调试器的网络选项卡并检查响应正文。如果存在响应,那么这是一个解析问题。如果没有响应,那就是服务器端问题。
  • 您尝试将"feed.php?load&amp;amp;menu_id="+menuID, 更改为"feed.php?load&amp;menu_id="+menuID,
  • 你是回显 json 还是从你的 php 函数中返回它? Echo 是正确的方法。此外,不要使用console.log(data),只需执行console.log('randomString') 即可查看您的代码是否到达那里。

标签: javascript jquery json getjson


【解决方案1】:

您的 URL 包含一个编码的 & 符号:

feed.php?load&menu_id="+menuID

&amp;amp; 在 URL 中使用时不会被解码。您的查询字符串已损坏。

【讨论】:

  • 我监督了那个...谢谢,这解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2016-03-30
  • 1970-01-01
  • 2013-11-24
  • 2022-01-11
  • 2015-03-18
  • 1970-01-01
相关资源
最近更新 更多