我有一个getJSON请求,它返回正确的值,但不添加列表
这是代码
<script type="text/javascript">
$(document).ready(function() {
$("select#make").change(function(){
$('div.data_loading').fadeIn();
$.getJSON("getmod.php",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
$("select#vmod").html(options);
$('div.data_loading').hide();
});
})
})
</script>
Bellow是从getmod.php返回的值
[{optionValue:13, optionDisplay:156},{optionValue:14, optionDisplay:164},{optionValue:15, optionDisplay:166},{optionValue:16, optionDisplay:GTV-6},{optionValue:17, optionDisplay:Spark},{optionValue:18, optionDisplay:Spider},{optionValue:19, optionDisplay:Graduate},{optionValue:20, optionDisplay:Quadrifoglio},{optionValue:21, optionDisplay:Milano},]
这里是选择框
<select name="vmod" id="vmod" >
</select>
bellow是我的php文件,返回JSON
$id=$_GET['id'];
$sql="select mname,mod from modl where mkd=".$id;
$result=mysql_query($sql);
echo "[";
for($i=1;$i<=mysql_num_rows($result);$i++)
{
$row=mysql_fetch_array($result);
echo "{optionValue:".$row['mod'].", optionDisplay:". $row['mname']."}";
echo ",";
}
echo "]";
答案 0 :(得分:4)
您的JavaScript代码看起来不错。
这是服务器的确切响应吗?那么你的JSON无效。字符串值和键必须用双引号括起来(我也不确定尾随的逗号)。粘贴您的JSON here并进行测试。另请查看http://json.org/。
这是有效的:
[{"optionValue":13, optionDisplay:156},
{"optionValue":16, "optionDisplay":"GTV-6"}]
看起来你手动构建了JSON字符串(使用字符串连接和循环)。不要这样做,请改用json_encode
。
更新:以下是该如何:
$results = array();
while(($row = mysql_fetch_assoc($result))) {
$results[] = $row;
}
echo json_encode($results);
另请注意,您的代码容易受到SQL注入攻击。您应该在$_GET['id']
上使用mysql_real_escape_string
。或者更好,使用准备好的陈述。