getJSON给出了statut 200但没有值

时间:2015-07-15 17:56:20

标签: javascript jquery json getjson

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

我有一段创建JSON对象的PHP代码,基本上我的页面看起来像这样:

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

当转到页面feed.php?load&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

但是控制台中没有任何对象。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您的网址包含编码的&符号:

  

feed.php负载&安培;安培; menu_id =“+ MENUID

在URL中使用时,

&amp;不会被解码。您的查询字符串已损坏。