.getJSON.ech()未解析JSON数据


.getJSON .each() Not Parsing JSON Data

我正在使用$.getJSON查询PHP页面(不在外部网站上),它将返回MySQL结果集,我使用json_encode()将结果集格式化为json字符串。问题是我可以取回数据,但当我尝试设置一些隐藏字段的值时,什么都不会发生。我曾经做过这个,但现在不行了。我一定是在没有意识到的情况下改变了什么。下面是代码:

jQuery:

$.getJSON('includes/Lookup.php', {locationType:$('#location').val()}, function(data) {
var valA = $('#valA');
var valB = $('#valB');
var valC = $('#valC');
$.each(data, function(index, data) {
     valA.val(data.field_valueA);
     valB.val(data.field_valueB);
     valC.val(data.field_valueC);
 });
});

Lookup.php:

<?php
$db = new MySqlDB();
if(!$db) {
// Show error if we cannot connect.
echo 'ERROR: Could not connect to the database.';
} else {
if(isset($_GET['locationType'])){
    $locationType = $_GET['locationType'];
    $db->where('id', $locationType);
    $sql = "SELECT field_valueA, field_valueB, field_valueC FROM table";
    $results = $db->query($sql);
    echo json_encode($results);
} else {
    echo 'not set';
}
}

这就是我在Firebug中得到的:

<??> {"field_valueA":2,"field_valueB":3.12,"field_valueC":12345}

我不知道为什么包括<??>。我在两个不同的地方,在两张不同的桌子上打这个电话(两者都不起作用),这就是我从另一个电话中得到的:

<??> [{"field_valueA":905,"field_valueB":18.180000305176,"field_valueC":16453}]

如果有人知道发生了什么,我将不胜感激。

编辑:现在看来,我整个应用程序中的所有ajax响应都以<??>为前缀。他们以前都工作过,现在不工作了,我不知道发生了什么。

您的PHP最终似乎错过了结束PHP标记?>。也许这就是为什么它表现得很奇怪。。。

已解决!我很不好意思地说,我的代码中有一个拼写错误,很容易错过一个额外的<?。谢谢你的建议。

为什么不简单地进行

 valA.val(data.field_valueA);
 valB.val(data.field_valueB);
 valC.val(data.field_valueC);

在您的情况下无需迭代