1

最初のフォーム成功関数内から別の AJAX フォーム ポストを実行する必要があります。

http://i.imgur.com/rZ2gx6G.jpg

例、これは 2 つの AJAX 要求を行います。 映画を検索 => 希望の映画を選択 => 特定の映画の詳細を表示

結果を div に読み込むことはできます<div id="results"></div>が、別の AJAX 要求を実行していない映画のタイトルを選択すると、要求はメイン ウィンドウに移動します。

これは、結果を処理する最初の検索ページです。

<script type="text/javascript">
   $(document).ready(function(){
       $("#searchtitle").submit(function() {
           var id = $(this).children('input[name="thetitle"]').attr('value');
           $.ajax({
               type: "POST",
               url: "s.php",
               data: $('#searchtitle').serialize(), 
               cache: false,
               success: function(data){
            $('#status').html(data);
               }
           });
          return false;
      });
   });

</script>

<form id="searchtitle">
   <input type="text" name="thetitle" />
   <input type="submit" name="submit" class="button expand postfix" value="Search" />
</form>
<div id="status"></div>

#results 内で結果を返す s.php

<?php
   if(empty($_POST['thetitle'])) {
   ?>
<div class="alert-box error">
   <div class="alert-error"></div>
   Error: Nothing Found
</div>
<?php
   }
   if(!empty($_POST['thetitle'])) {
      $myid = strtoupper($_POST['thetitle']);

      $searchReults = $tmdb_V3->searchMovie($myid,'en');
      ?>
<?php
   foreach($searchReults['results'] as $result) {
   ?>
<form class="sform">
   <input type="hidden" name="mid" value="<?php echo $result['id']); ?>" />
   <h5><?php echo $result['title']; ?></h5>
   <span class="mreleased">Year: <?php echo $result['year']; ?></span>
   <input type="submit" class="button" value="Select">
</form>
<?php
   }
   }
   ?>

これは、s.php からの結果を投稿するコードです。

<script type="text/javascript">
$(".sform").submit(function () {
    $.ajax({
        type: 'POST',
        url: 'sx.php',
        data: $(this).closest("form").serialize();
        success: function (response) {
            $('#status').load(response);
            $('#status').find('script').each(function (i) {
                eval($(this).text());
            });

        }
    });

    return false;
}  
</script>

これをs.php内、最初の検索ページの下部、最初のページの先頭に配置しようとしましたが、うまくいきません.sx.phpではなく、正常に送信されます。

4

1 に答える 1

2

s.php のステートメント:

<input type="hidden" name="mid" value="<?php echo $result['id']); ?>" />

次のようにする必要があります。

<input type="hidden" name="mid" value="<?php echo $result['id']; ?>" /> //remove extra bracket

s.php の JavaScript コードには、いくつかのタイプミスがあります。

data: $(this).closest("form").serialize(); // here should be comma not semicolon

return falseスクリプトを適切に閉じた後}は、});.

また、動的コンテンツを送信しようとしているため、機能し$(".sform").submit(function ()ません。on動的コンテンツに使用する必要があります。したがって、正しいスクリプトは次のようになります。

<script type="text/javascript">
 $(document).on('submit', '.sform', function () {
    $.ajax({
        type: 'POST',
        url: 'sx.php',
        data: $(this).closest("form").serialize(),
        success: function (response) {
            $('#status').load(response);
            $('#status').find('script').each(function (i) {
                eval($(this).text());
            });

        }
    });

    return false;
 });  
</script>

ローカルホストでチェックして確認しました(簡単なセットアップで)。両方の ajax リクエストを作成しています。お役に立てれば!

于 2013-07-25T07:35:14.353 に答える