2016-10-08 27 views
0

これについて多くの質問があることがわかりましたが、私のケースに当てはまるような詳細は見つかりませんでした。json配列を返すAJAX呼び出しが未定義

私はSQLデータベースからajax呼び出しにデータを渡すphpファイルでデータを取得しようとしています。すべてがうまく動作しているようですが、コンソールにデータを出力しようとすると、data.storyなどの配列の正確な部分にアクセスしようとしても、変数は "未定義"になります。私もdata [0] .storyを試しましたが、undefinedの 'story'フィールドにはアクセスできないというエラーが表示されました。 コードは次のとおりです。

あなたの助けを借りてくれてありがとう。

私のPHPファイル:

<?php 
$con = mysqli_connect('localhost','root','password','db'); 
if (!$con) { 
die('Could not connect: ' . mysqli_error($con)); 
} 
$array = array(); 
$sqlFetch = "SELECT s.storyTitle, s.story, s.lattitude, s.longitude, 
u.nickname, u.platformUsed, u.sexuality, u.gender, u.age, s.category, 
s.dateRecorded FROM stories AS s INNER JOIN users AS u ON u.email = s.email 
WHERE s.postStatus != 'published'"; 
$result = mysqli_query($con,$sqlFetch); 
if(!is_null($result->num_rows)){ 
$encode = array(); 
while($row = mysqli_fetch_assoc($result)) { 
    $encode[] = $row; 
} 
echo json_encode($encode); 
} 
?> 

とAjaxコード:

$.ajax({ 
     type: 'post', 
     url: "http://localhost/wordpress/wp-content/themes/TinDA/js/loadData.php", 
     dataType: 'json', 
     data: "", 


}).done(function(data){ 
    console.log(data); 
//tried also: console.log(data.story); and data[0].story; 


}); 
+0

あなたのPHPスクリプトでprint_r($ encode)を試みましたか? – Giovani

答えて

1

あなたがオブジェクト指向スタイル

手続きスタイルためmysqliの接続を混合しているようです

手続き:

$con = mysqli_connect('localhost','root','password','db'); 
$result = mysqli_query($con, "SOME SELECT STATEMENT"); 

while ($row = mysqli_fetch_assoc($result)){ 
    $data[] = $row; 
} 

$rows = mysqli_num_rows($result); 
if($rows){ 
    json_encode(array('data' => $data, 'msg'=> 'successs')); 
} else { 
    json_encode(array('data' => $data, 'msg'=> 'error or no records...')); 
} 

OOP:

$con = new mysqli('localhost','root','password','db'); 
if($con->connect_errno){ 
    echo "WTF didn't work!!" . $con->connect_error; 
} 

$res = $con->query('SOME SELECT STMNT'); 
while ($row = $res->fetch_assoc()){ 
    $data[] = $row; 
} 

$rows = $con->num_rows; 
if($rows){ 
    json_encode(array('data' => $data, 'msg'=> 'successs')); 
}else { 
    json_encode(array('data' => $data, 'msg'=> 'error or no records...')); 
} 

私も(動作しない場合があります3.0と異なる)アヤックスのこのバージョンを使用するようにしたいです。 これで、データのエラーを確認できます。注意、成功したajax呼び出しを返すことができますが、まだエラーがあります。

$.ajax('/http://localhost/...', { 
    type: 'POST', 
    dataType: 'json', 
    success: function(json) { 
     console.log(json); 
    }, 
    error: function(req, status, err) { 
     console.log('WTF!!', status, err); 
    } 
}); 
+0

ありがとうございます。私は結局それを解決する。私は自分のSQLクエリに間違った条件がありました。とにかくこれを見ていただきありがとうございます。 – Tomyi

関連する問題