1

私がやろうとしているのは、データベース情報を取得して JavaScript 配列に入れてスライドショーを作成することです。現在、jquery ajax 関数を使用して、別の php ファイルから情報を呼び出しています。これが私のphpコードです:

mysql_connect('x', 'x', 'x') or die('Not Connecting');
mysql_select_db('x') or die ('No Database Selected');

$i = 0;
$sql = mysql_query("SELECT comicname FROM comics ORDER BY upldate ASC");

while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
echo "comics[" .$i. "]='comics/" .$row['comicname']. "';";
$i++;
}

私が望むのは、mysql クエリから php で配列を作成し、それを javascript で参照して、単純なスライドショー スクリプトを作成できるようにすることです。ご質問やご提案がありましたらお知らせください。

4

3 に答える 3

3

OK、あなたの.phpを持っていますecho json_encode('name of your php array');

次に、JavaScript 側では、ajax は次のようになります。

$.ajax({
        data:       "query string to send to your php file if you need it",
        url:        "youphpfile.php",
        datatype:   "json",
        success:    function(data, textStatus, xhr) {
                        data = JSON.parse(xhr.responseText);
                        for (i=0; i<data.length; i++) {
                        alert(data[i]); //this should tell you if your pulling the right information in

                        }
        });

たくさんのデータがある場合は、おそらく data.length を 3 などに置き換えてください...正しいデータを取得するために yourJSArray.push(data[i]); を使用する場合 実際にはもっと直接的な方法があると確信しています...

于 2012-04-25T20:00:15.597 に答える
3

すべての行を大きな配列にフェッチしてから、次のようにエンコードすることができJSONます。

$ret = array();
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
        $ret[] = $row
echo json_encode($ret);

次に、クライアント側で、次のように呼び出します。

function mycallback(data)
{
        console.log(data[0].comicname); // outputs the first returned comicname
}

$.ajax
        (
        {
        url: 'myscript.php',
        dataType: 'json',
        success: mycallback
        }
        );

リクエストが正常に完了すると、mycallbackが呼び出され、マップの配列が渡されます。各マップは結果セットのレコードを表します。

于 2012-04-25T20:02:47.770 に答える
2

あなたの質問から見分けるのは少し難しいですが、それは次のように聞こえます:

  1. JSでサーバーにAJAX呼び出しを行っています
  2. サーバー(PHPを使用)が結果で応答します
  3. 結果が返されると、jQueryは渡されたコールバックを呼び出します...
  4. そして、あなたはこの時点で迷子になっていますか?すなわち。スライドショーでそれらを使用できるように、これらのAJAX結果を配列に配置することのポイントは?

その場合、解決策は非常に簡単です。AJAXコールバック内で、結果をグローバル変数(window.myResults = resultsFromAjax;など)に入れ、スライドショーを開始するときにその変数を参照します。

ただし、タイミングが問題になる可能性があるため、代わりにコールバック内から実際にスライドショーを開始する方が理にかなっている場合があります。追加のボーナスとして、そのアプローチはグローバル変数を必要としません。

これが行き詰まっている場所でない場合は、詳細を投稿してください。

于 2012-04-25T19:56:06.123 に答える