0

私は試験のためのプロジェクトをやっています。私はそれで立ち往生しており、あなたの誰かが私を助けてくれることを願っています(私はイタリア人なので、英語が下手でごめんなさい!)。PHP スクリプトを使用して、phpmyadmin に保存されている既存のデータベースにクエリを実行する必要があります。次に、クエリ結果を jquery スクリプトで解析し、HTML ページに出力する必要があります。PHPスクリプトは次のとおりです。

    <?php
     $con = mysql_connect('localhost', 'root', '');
     if (!$con) {
       die('Errore di connessione: ' . mysql_error());
     }

     mysql_select_db("progetto_lpw", $con);

     $sql="SELECT denominazione FROM farmacia";
     $result = mysql_query($sql) or die(mysql_error());

     $num=mysql_numrows($result);
     while($row = mysql_fetch_array($result)){
         print json_encode($row['denominazione']);
         print "<br />";
      }
      ?>

ブラウザ経由で呼び出すPHPスクリプトをすでにテストしており、動作します。

次に、この jquery スクリプトを使用して結果を解析します (この組み合わせの使用はプロジェクトの要件です)。

$("#button").click(function(){

 $.getJSON('json.php', function(data) {

        $.each(data, function(index,value){

                $("#xx").append("<p>"+value+"</p>")
                })
            })
})

ここに問題があります: HTML ページを開いて Firefox のボタンをクリックすると、consolle は PHP スクリプトを参照して「要素が見つかりません」と表示します。

「xx」は、要素が出力される div の ID です。

エラーはどこにありますか?

みんなありがとう。

4

2 に答える 2

2

以下のコードを置き換えます

while ($row = mysql_fetch_array($result)) {
    print json_encode($row['denominazione']);
    print "<br />";
}

以下のコードで試してみてください

$rows = array();
while ($row = mysql_fetch_array($result)) {
    $rows[] = $row['denominazione'];
}

header('Content-type: application/json');
echo json_encode($rows);

HTML

<button id="button">Fetch JSON</button>
<div id="xx"></div>

JS

$("#button").click(function() {
    $.getJSON('json.php', function(data) {
        $.each(data, function(index, value) {
            $("#xx").append("<p>" + value + "</p>")
        });
    });
});

からの応答json.phpは以下の形式である必要があります

["AGGERI","ALCHEMICA 1961"]

コードが機能しない理由は、次のような出力が生成されるためです。

"foo"<br />
"bar"<br />

それは有効なJSONではありません。有効であるためには、そこに HTML が含まれていない<br />必要があり (これは HTML ではなく JSON です)、返す要素の間にコンマが必要です。

json_encode配列のフォーマットを正しく処理します。

json出力を送信および取得するためのポスト リクエストを含む jsFiddle デモ

于 2013-07-21T09:45:57.247 に答える
0

「print」は「echo」とは動作が異なります。少なくとも、php からのエコーで JSON パッケージを送信しています。交換できますか?

// in php
echo json_encode($row['denominazione']);

// in jquery script, best to place "<br />" tag here
$("#xx").append("<p>"+value+"</p><br />")
于 2013-07-21T09:46:53.080 に答える