2012-04-13 21 views
0

私は以下の理由で少し混乱しています。JSON経由でjquery配列にPHP配列

get.php

<?php 

$username="root"; 
$password="root"; 
$database="testing"; 

mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 

$name= $_GET['name']; 

$query="SELECT * FROM tableone "; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

$array = array(); 

$i=0; 
while ($i < $num) { 

    $first=mysql_result($result,$i,"firstname"); 
    $last=mysql_result($result,$i,"lastname"); 
    $date=mysql_result($result,$i,"date"); 
    $ID=mysql_result($result,$i,"id"); 

    $array[] = $first; 

    $i++; 
} 

echo json_encode($array); 

?> 

jQueryの

var arr = new Array(); 

    $.get("get.php", function(data){ 
     arr = data; 
     alert(arr); 
    }, "json"); 

私は次のことを実行すると、私はこの

["James","Lydia","John"] 

しかし、ときのように見える名前のリストを取得します私はarr [2]のようなエントリ、私はちょうど 'J'を与えます、なぜそれは要素が私が期待するような単一のエントリをarntするのですか?

誰でも手渡しできますか?

ありがとうございます!

更新

$.get("get.php", function(data){ 

    arr = $.parseJSON(data); 
    alert(arr); 
}, "json"); 

は、結果を返すように思えないのですか?

+0

データはまだJavaScript配列に解析されておらず、 'arr'はまだ文字列です。それ以外の場合、 'alert(arr)'は 'James、Lydia、John'を出力します。 –

+0

副詞として、 'var arr = new Array();'は何もしません。なぜなら、後でその変数に別の値を割り当てるからです。 –

答えて

4

dataにはJSONの文字列が含まれているため、arr[2]は文字列の3番目の文字になります。 $.parseJSON(data)を使用する必要があります。

+0

なぜデータ型引数を渡すのがうまくいかないのでしょうか? –

+0

これは私がこのインスタンスでどのように使用するのでしょうか? 'arr =($ .parseJSON(data));' –

+0

うん、それは正しい。しかし、ラッパーの必要はありません: 'arr = $ .parseJSON(data);' – BenM

3

あなたのPHPは、JSONがHTMLであると主張しています。 jQueryを自動的に処理するには、JSONであると明示的に言う必要があります。

header("Content-type: application/json"); 
+0

それにもかかわらず、データ型引数が指定されていないとしたらどうでしょうか? –

0

のjQueryが自動的にあなたのJSONデータをデコードする必要がありますのでheader('Content-type: application/json');を経由して、PHPでJSONヘッダを送信します。

0

データ値を配列に渡すことはできません。

$.get("get.php", function(data){ 
    alert(data[2]); 
}, "json");