1

手短に言います...ジャンプしようとしています

すべての結果が機能しているわけではありません

私が含めているドキュメントヘッダーにjquery-1.7.2.min.js-

私の質問:

"SELECT tableA.columns_xyz..., tableB.columns_xyz..., tableC.columns_xyz 
FROM tableB
JOIN tableC ON tableB.x = tableC.x
JOIN tableA ON tableB.x = tableA.x
WHERE tableA.x = '$query_value'
GROUP BY tableA.y
ORDER BY tableA.y DESC 
LIMIT 1";

問題 1:

または何でも>1に変更LIMIT 1するLIMIT 5と、クエリはphpmyadminで正常に実行されますが、ajax/json/php経由では実行されません

PHP:

$sql = above...
$result = $mysqli->query($sql);
while($row = mysqli_fetch_array($result)) {
echo json_encode(array($row['x'],$row['y'],....$row['z']));
$mysqli->close();

JavaScript:

$.ajax ({
    url: 'script.php',
    type: "post",
    dataType: "json",
    data: {value : $("#searchbox").val()},
    success: function(data) {
        var a = parseFloat(data[0]);
        var b = parseFloat(data[1]);
        var c = data[2];

            document.getElementById("blah1").innerHTML = a;
            document.getElementById("blah2").innerHTML = b;
            document.getElementById("blah3").innerHTML = c;
       }
});

html:

<td><span id="blah1"></span></td>
<td><span id="blah2"></span></td>
<td><span id="blah3"></span></td>

問題 2:

一部の要素はページに印刷され、一部の要素は印刷されません。私は何を間違っていますか?

問題 3:

document.getElementById("blah1").innerHTML;として表現できるはずですが、$('#blah1');機能$('#blah1');していません...理由がわかりません...

4

2 に答える 2

1

各行を別々にエンコードするjsonではなく、1つのオブジェクトを作成してからjsonでエンコードするべきではありませんか?

私はSQLにはあまり向いていませんが、LIMITが1より大きいということは、(潜在的に)複数の行が返されることを期待していることを意味しますよね?

もしそうなら、あなたは基本的に1つの応答で複数のjson応答を返していますが、これはすべきではないと思います。

于 2012-07-14T11:44:19.663 に答える
1

各行を配列に格納してから、json_encode を 1 回使用します。

$store = array();
while($row = mysqli_fetch_array($result)) {
    $store[] = array('x'=>$row['x'], 'y'=>$row['y'], 'z'=>$row['z']);
}
echo json_encode($store);

JSON.parse次に、クライアント側で使用できます。

var store = JSON.parse(data)

そして、それをループするだけです:

for(var x in store){
    $('#blah1').html(store[x]['x']);
}

あなたはすでに jquery を使用しています。

document.getElementById("blah1");

そのjqueryバージョンへ:

$('#blah1');

IDを使用しているため、これらの要素が一意であることを確認してください

于 2012-07-14T11:49:35.937 に答える