0

私のMySQLデータベースには、VideoIDとVideoCodeの列があります

次のようにリスト内の次のビデオを選択することを目的としたPHP関数がbackend.phpにあります。

$VideoID = 0;

function nextvideo(){
    global $VideoID;
    $VideoID = $VideoID + 1;
    $sql = mysql_query("SELECT * FROM Videos WHERE VideoID = '".$VideoID."'");
    $result = mysql_fetch_array($sql);
    return $result[2];
}

$VideoCode = nextvideo();

次に、埋め込みビデオを提供するURL内のフロントエンドファイルに$VideoCode変数があります。echo

nextvideo()それはすべて問題なく機能し、関数が呼び出されるたびに次の関数が$VideoCode正しく選択されます。ただし、ユーザーがnextvideo()関数を効果的に呼び出して次のビデオをロードできるようにする「次へ」ボタンを実装したいと思います。だから私はAJAXと.get()関数を使う必要があることを知っていますが、それをどのように使うのかわからず、それを読んでみました。これまでのところ私はこれを持っています:

<script type="text/javascript">
  function next() {
      $.get("backend.php", *1*, *2*);
      return false;
  }
</script>

<a href="#" onclick="next();">Next</a>

関数のbackend.phpの後で、バックエンドファイルに送信するものであり、返送された結果をどう処理するかという$.get()、もう少し情報が必要であることを私は知っています。これは私が立ち往生しているところです。*1**2*

それが私が呼び出したいPHP関数であるためである*1*必要がありますか?それから変数が更新されて次のビデオが更新されるようにページを更新するものである必要がありますか?ドキュメントを読んで、私はそれが次のように見える必要があることを知っています:nextvideo()*2*$VideoCode

$.get("test.php", function(data){
    alert("Data Loaded: " + data);
});

しかし、何function(data)ですか?

4

2 に答える 2

3

function(data)リクエストが完了したときに呼び出される JavaScript 関数でdata、サーバーから返されたページである変数を渡します。つまり、リクエストが完了すると、その関数のコードが実行され、変数dataにはサーバーがリクエストから送り返したものが含まれます。

あなたがしたいことは、このようなものです

<script type="text/javascript">
  function next() {
     var currentVideoId = $('#videoId').val();
     $.get("backend.php", { videoId: currentVideoId }, function(data) {
        $('#video').html(data); 
        $('#videoId').val($('#videoId').val() + 1);
     });
     return false;
  }
</script>

<a href="#" onclick="next();">Next</a>

videoId現在のビデオの id の値を持つ id を持つ非表示の入力フィールドとvideo、新しいビデオで更新される要素である id を持つ要素があります。

PHP スクリプトは次のようになります。

$VideoID = intval($_GET['videoId']) + 1;
$sql = mysql_query("SELECT * FROM Videos WHERE VideoID = '".$VideoID."'");
$result = mysql_fetch_array($sql);
echo $result[2];

これは、AJAX 関数によって渡される $_GET 変数を受け入れ、datajavascript の変数に送信されるビデオ コードを出力します。

これがお役に立てば幸いです。まだ不明な点がある場合は、お問い合わせください。

于 2012-08-23T20:31:53.960 に答える
0

関数のシグネチャは次のとおりです。

jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

url:「get」httpリクエストを行うURL。これは、htmlファイル、プレーンテキストファイル、画像などである可能性があります。あなたの場合、それは、呼び出すたびに完全に実行されるphpファイルです。

[data]:オプションのパラメータ、キーと値のペアの形式でリクエストとともに送信するデータ。たとえば、リクエストを使用して、を送信できます:{id:1}、これをサーバー(この場合はphpスクリプト)が受信し、クライアント(この場合はjavascript)に適切な応答を提供するために使用できます

[success]:オプションのパラメータ、サーバーが応答した後に実行されるコールバック関数。これはオプションのパラメーターですが、サーバーがその役割を果たして応答を提供した後は、おそらく常に何かをしたいと思うでしょう。

あなたが提供した例では:

function(data){
   alert("Data Loaded: " + data)
};

は無名関数です(名前は付けられていません)。実行されると、その関数は最大3つのパラメーターを受け取ります success(data, textStatus, jqXHR)。サーバーから返送されるデータに関心があります。text、xml、html、jsonなど、何でもかまいません。これはjqueryドキュメントWebサイトの例にすぎないため、関数は受信したデータにのみアラート(ブラウザからの迷惑なメッセージボックス)を送信し、実際には何の役にも立ちません。 。特定のケースであなたが何をしたいのかよくわかりませんが、私の一般的な答えがお役に立てば幸いです。

于 2012-08-23T20:54:24.843 に答える