.getJSON .each()不解析JSON数据

时间:2012-01-19 14:00:36

标签: php jquery json getjson

我使用$ .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响应都以<??>为前缀。他们之前都工作过,现在他们都没有,我不知道发生了什么。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

为什么你不这样做

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

无需在您的案例中进行迭代

相关问题