我正在使用$.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);
在您的情况下无需迭代