2012-06-16 121 views
1

我有一个PHP(history.php),创建一个JSON列表JSON阵列

$i=1; 
$q=mysql_query("select * from participants where phone='".mysql_real_escape_string($_GET['phone'])."' limit 10"); 
while($rs=mysql_fetch_array($q)){ 
     $response[$i] = $rs['code']; 
$i++; 
    } 
    print json_encode($response); 
    exit; 

在JS我访问此文件:

var req=$.get("history.php", { phone: "" + phone + ""}, 

         function(data) { 
     //data="1":"code1","2":"code2","3":"code3","4":"code4","5":"code5"}; 
          var msg = ""; 
          for(i=1;i<=5;i++){ 
           msg+= "<li>"+data[i]; 
          } 
          $(form_message).html(msg); 

         }) 

这段代码执行后我的输出是

  • 这意味着‘数据’不作为一个数组..它通过像字符串传递。 但是,如果我取消注释js中的数据var,一切都可以。 输出是:

  • 代码1
  • 码2
  • CODE3
  • 码4
  • 代码4
  • 能否请你告诉我,我究竟做错了从PHP传递数据的时候。提前

    回答

    2

    感谢在你的情况下返回的内容被解释为text,而不是json,你需要使用$.getJSON而不是$.get

    var req=$.getJSON("history.php", { phone: "" + phone + ""}, function(data) { 
        var msg = ""; 
        for(var i in data){ 
         msg+= "<li>"+data[i]+"</li>"; 
        } 
        $(form_message).html(msg); 
    }); 
    
    +0

    是,就是这样。非常感谢。你能告诉我如何确定数据的长度...我试过data.length但返回undefined :( –

    +0

    @MihaiStancioiu你是什么意思,按''长度'?键的数量(例如1 ,2,3,4,5)在数据对象中? – Engineer

    +0

    @MihaiStancioiu我认为,你不需要它...使用'for in'来交换所有'data'元素,而不是'for'.See我的更新 – Engineer