jquery中的$ .getJSON问题

时间:2010-10-15 09:27:54

标签: php jquery

我的Jquery代码

function nalozi() {
  var id_skupine = $('#skupina option:selected').val();
  $('#artikel option').remove();

  //$('#artikel').append('<option value="'+id_skupine+'">'+id_skupine+'</option>');
  $.getJSON('artikli.php', {id_skupine:$('#skupina').val()}, function(data) {
    $.each(data, function(index,item) {
      $("#artikel").append("<option value=" + item.id + ">" + item.ime_artikla + "</option>"); 
    });
  });  
} 
$(document).ready(function() {
  nalozi();
  $('#skupina').change(function() {
    nalozi();
  });
});

和PHP代码

<?php

if(isset($_GET['id_skupine'])) 
{
 $id_skupine = $_GET['id_skupine'];
 $poizvedba = mysql_query("SELECT id,ime_artikla FROM artikli WHERE id_skupine = '$id_skupine'");
 $velikost = mysql_num_rows($poizvedba);

 for ($i=0;$i<$velikost;$i++)
 {
        $elements[]=mysql_fetch_assoc($poizvedba);
 }

}
echo json_encode($elements);

?>

我没有得到价值。

2 个答案:

答案 0 :(得分:1)

<强>更新

在对sql查询进行sanitalizing / validating / type-conversion之前,不应该将变量放入。如果您在查询字符串中所期望的值是数字,则需要正确地对其进行类型转换:

$id_skupine = (int) $_GET['id_skupine'];

如果它是一个字符串,你至少可以使用mysql_real_escape_string函数:

$str = mysql_real_escape_string($_GET['str']);

你不应该像这样抓住db的记录:

if(isset($_GET['id_skupine'])) 
{
     $id_skupine = $_GET['id_skupine'];
     $poizvedba = mysql_query("SELECT id,ime_artikla FROM artikli WHERE id_skupine = '$id_skupine'");
     $velikost = mysql_num_rows($poizvedba);

     while($row = mysql_fetch_assoc($poizvedba)){
       $elements[] = $row['ime_artikla'];
     }
}

echo json_encode($elements);

答案 1 :(得分:0)

您的查询可能不会返回任何内容

$poizvedba = mysql_query("SELECT id,ime_artikla FROM artikli WHERE id_skupine = '$id_skupine'");

'$id_skupine'

中删除单引号

尝试

$poizvedba = mysql_query("SELECT id,ime_artikla FROM artikli WHERE id_skupine = '".$id_skupine."'");