2016-09-08 10 views
3

phpからJSON結果をjavascript変数に割り当てました。 結果がI以下のように見えるが、それは私に未定義を与える未定義javascriptオブジェクト配列のエントリにアクセスする方法

[{"a":"2","u":"jamesoduro","l":"Oduro","f":"James"},{"a":"5","u":"deary.grace","l":"Grace","f":"Dear"}] 

を返されたシンプルなこの2つのオブジェクトを持つjavascript配列のように見える知っています。 オブジェクト内のデータにアクセスしようとしていますが、無駄です。以下 はスクリプトです:

PHP

<?php 

//fetch online users 
$array = array(); 
$sql = "SELECT id as a,username as u, lastname as l,firstname as f FROM users WHERE active =1 limit 2"; 
$q  = mysqli_query($dbc_conn,$sql); 

while($row = mysqli_fetch_assoc($q)){ 
    $array[] = $row; 

} 

$json = json_encode($array);  
echo $json; 


?> 

jQueryの

$(document).ready(function(){ 

    //checking online users 
    setTimeout(function(){ 
    $.ajax({ 
     url:"testing.php", 
     type:"post", 
     success:function(response){ 

      var array = response; 
      console.log(array[0].f +" "+ array[0].l); 
     } 
    }); 
},200); 

}); 

してください問題何ができますか?ありがとう

+0

dataType:'json'を渡します。 https://jsfiddle.net/uwtr3q7j/。 AJAXリクエストで 'contentType:" application/json "'を試してください。jQueryにJSONのデシリアライズを強制します(応答に正しいMIMEタイプが設定されている場合はこれを行う必要があります)。 'console.log(応答のタイプ)' –

+0

'var array = JSON.parse(response);' –

+0

はい。あなたが結果をコピーしてデータにアクセスしようとしたとき – lernyoung

答えて

1

応答デシリアライズしてみてください。

var array = JSON.parse(response); 

説明を

あなたはオブジェクトに変換する必要があるので、あなたはAJAX呼び出しから取得応答は、タイプ文字列であります。これはJSON.parse()メソッドの機能です。JSON文字列を解析し、この文字列が表すオブジェクトを特定の規則に従って作成します(解析された文字列はvalidJSON形式である必要があります)。

+0

ありがとう..この作品... JSON.parese()が何をし、なぜそれを使ったのか教えていただけますか? – lernyoung

2
$.ajax({ 
    url:"testing.php", 
    type:"post", 
    success:function(response){ 

     var array = JSON.parse(response); 
     console.log(array[0].f +" "+ array[0].l); 
    } 
}); 

PHPから文字列を取得するには、文字列をjsonオブジェクトに変換する必要があります。

コードをデバッグして、何がうまくいかないのかを知る必要があります。

1

は、サーバー側のPHPスクリプトコードは

  1. 清楚な最初の行の最初の文字からスタートPHPブロックを保管してください。
  2. HTML形式の出力がない場合、phpブロックを閉じないでください。
  3. エコー出力が開発者モードであり、表示エラーが有効になる前に、ob_clean()関数を使用してください。クライアント側で
例えば

ob_clean(); 
echo json_encode($array); 

あなたはAJAXでJSONレスポンスを取得している場合、あなたはあなたのコードが動作するはず示してきたものを考えると、AJAXオプションで

$.ajax({ 
    url:"testing.php", 
    type:"post", 
    dataType:"json", 
    success:function(response){ 
     console.log(response[0].f +" "+ response[0].l); 
    } 
}); 
+0

うわー...私はdataTypeの使用を検討していました。どうもありがとうございます – lernyoung

関連する問題