getJSON 返回值,但值未添加到列表框中
我有一个 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>
下面是从 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>
下面是我的 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 "]";
i have one getJSON request which is returning proper values but its not adding in list
here is code
<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 is values returned from 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},]
here is select box
<select name="vmod" id="vmod" >
</select>
bellow is my php file which return 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 "]";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的 JavaScript 代码看起来没问题。
这是服务器的确切响应吗?那么你的 JSON 无效。字符串值和键必须用双引号括起来(我也不确定结尾的逗号)。将 JSON 粘贴到此处并进行测试。另请查看 http://json.org/。
这是有效的:
看起来很像您手动构建了 JSON 字符串(使用字符串连接和循环)。不要这样做,使用
json_encode
反而。更新:应该是这样的:
另请注意,您的代码很容易受到 SQL 注入攻击。您应该使用
mysql_real_escape_string
在$_GET['id']
上。或者更好的是,使用准备好的语句。Your JavaScript code looks ok.
Is this the exact response form the server? Then your JSON is not valid. String values and keys have to be enclosed in double quotes (I'm also not sure about the trailing comma). Paste your JSON here and test it. Also have a look at http://json.org/.
This would be valid:
It pretty much looks like you built the JSON string manually (using string concatenation and a loop). Don't do that, use
json_encode
instead.Update: Here is how it should be:
Also note that your code is prone to SQL injection attacks. You should use
mysql_real_escape_string
on$_GET['id']
. Or better, use prepared statements.