getJSON 返回值,但值未添加到列表框中

发布于 2024-10-31 07:57:03 字数 1419 浏览 2 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼藏柔 2024-11-07 07:57:03

你的 JavaScript 代码看起来没问题。

这是服务器的确切响应吗?那么你的 JSON 无效。字符串值和键必须用双引号括起来(我也不确定结尾的逗号)。将 JSON 粘贴到此处并进行测试。另请查看 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 注入攻击。您应该使用 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:

[{"optionValue":13, optionDisplay:156},
 {"optionValue":16, "optionDisplay":"GTV-6"}]

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:

$results = array();

while(($row = mysql_fetch_assoc($result))) {
    $results[] = $row;
}

echo json_encode($results);

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文