2013-07-25 126 views
1

我需要在第一個表單成功函數中執行另一個AJAX表單發佈。從AJAX成功提交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> 

s.php返回#results內的結果

<?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中,在初始搜索頁面的底部,在啓動的頭部al頁面,但沒有運氣,它提交罰款只是不是它應該在哪裏sx.php。

+0

將表單提交功能從該文件的外部移到同一個文件中。然後,在第一個ajax成功函數中,調用'$('.sform')。submit();' – Ohgodwhy

+0

Duplicate http://stackoverflow.com/questions/15065725/how-to-submit-a-form-on- ajax-success?rq = 1 – maximkou

+0

你能否提供你的表單結構以便我們可以設置和檢查? – Konsole

回答

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請求。希望這可以幫助!

+1

你剛剛解決了我3天的頭痛!這工作完美無瑕!謝謝! –