2016-07-19 9 views
0

私はajax呼び出しを行うときにjson_encodedデータを解析しています。データをコンソールに記録すると、実際にはオブジェクトの代わりに文字列が配列になります。これはこれを示しています。ajaxオブジェクトの代わりに文字列の配列を返すJSON呼び出し

[ 
"{" todoText":"dgdgdfgdfgdf", 
"completed":false, 
"editable":false 
}", 

"{ 
"todoText":"test 2", 
"completed":false, 
"editable":false 
}", 

"{ 
"todoText":"test 3", 
"completed":false, 
"editable":false 
}", 

"{ 
"todoText":"sdfsdf", 
"completed":false, 
"editable":false 
}" 
] 

これは、データの取得を呼び出すために使用したコードです。

$(document).ready(function() { 


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

var parsed = JSON.parse(data); 


    $('#directions').html(parsed[0]); 

    console.log(parsed); 
}) 

}); 

これはデータをエンコードし、JavaScriptに戻すために使用したPHPコードです。

$query = "SELECT * FROM list"; 
$result = $conn->query($query); 
if (!$result) die ("Database access failed: " . $conn->error); 

$rows = $result->num_rows; 


for ($j = 0 ; $j < $rows ; ++$j) 
{ 
$result->data_seek($j); 
$row = $result->fetch_array(MYSQLI_NUM); 


$x[$j] = $row[2]; 


} 

echo json_encode($x); 
+0

$x[$j] = $row[2]; 

を交換してください、あなたは試してみました:JSONにPHPのMIMEタイプを設定しますか? 'JSON.parse'の前/後に' console.log(data) 'を使用しますか? – Jeff

+0

ほとんど同じものを出力する@Jeff今のところそれはそれにフォワードスラッシュを持っています – nj51

答えて

2

あなたはこのようにそれをデコードする必要があるので、どうやら、あなたの$row[2]はJSONオブジェクトです:

$x[$j] = json_decode($row[2]); 

私は、これはあなたを助けることを願っています。

+0

非常に良いキャッチ!! – Jeff

+0

ありがとう、これは動作します!私はちょうどあなたが何が起こったのか説明できるかどうか疑問に思います。だから最初に私はjavascriptでオブジェクトをストリンジェライズし、サーバー側に送るためにajaxリクエストを送信しました。次にこれをmysqlテーブルの行に挿入しました。なぜ私はその行をデコードしてそれを再度エンコードして送り返す必要があるのですか? – nj51

+0

'$ row [2]'は行ではなくフィールドであり、文字列(文字列化されたオブジェクト)として格納されます。私は詳細な説明を提供するためにあなたのコードを見る必要があります! –

関連する問題