2011-09-30 151 views
0

我這種情況的內部xxx.phpjquery,如何使用多個Ajax請求?

<form id="s"> 
<input id="q"/> 
<input type="submit" href="Search!"/> 
</form> 
<div id="r"></div> 

foo.php裏面我有另一種形式:

<form id="ss"> 
<input id="qq"/> 
<input type="submit" href="Search!"/> 
</form> 
<div id="rr"></div> 

yyy.php裏面我有另一種形式:

<form id="sss"> 
<input id="qqq"/> 
<input type="submit" href="Search!"/> 
</form> 
<div id="rrr"></div> 

javascript.js我有:

$('#s').submit(function(evt) { 
evt.preventDefault(); 
$.ajax({ 
url: 'foo.php', 
data: { 
    query: $('#q').val() 
    }, 
success: function(data) { 
    $('#r').html(data); 
    } 
}); 
return false; 
}); 

$('#ss').submit(function(evt) { 
evt.preventDefault(); 
$.ajax({ 
url: 'yyy.php', 
data: { 
    query: $('#qq').val() 
    }, 
success: function(data) { 
    $('#rr').html(data); 
    } 
}); 
return false; 
}); 

發生什麼事是,當我提交第一個表單第二個加載,所以現在我有2個表單(如預期),但是當我提交第二個表單時,第三個不使用ajax加載,但它通過刷新重定向到它。

所以基本上我需要做許多AJAX負荷,因爲我可以

什麼想法?

感謝

+0

這可能不是問題,但爲什麼你的SUBMIT INPUT中有HREF?對我來說,你應該有VALUEs。 – graphicdivine

+0

你處理$('#sss')。submit(function(evt){}); – run

回答

2

您需要使用的東西的現場直播節目,你動態加載所以你的情況:

$("#ss").live('submit', function (e) { 
    // Code here 
}); 

你只需要使用現場活動的事情上總是不在DOM。如果您通過ajax請求頁面,然後打算使用它們,則需要使用實時事件。

參見:http://api.jquery.com/live/ 對於更詳細一點

+0

我在想它,但它似乎仍然不起作用 – Patrioticcow

+0

@HenryGarle你不喜歡 - 你可以簡單地手動綁定事件到新的元素,一旦他們加載。 – Alnitak

+0

ups,它開始工作,看起來像第一個Ajax必須像我設置它 – Patrioticcow

4

你應該使用.live因爲你要添加的數據動態

$('#ss').live('submit', function(evt) { 
evt.preventDefault(); 
$.ajax({ 
url: 'yyy.php', 
data: { 
    query: $('#qq').val() 
    }, 
success: function(data) { 
    $('#rr').html(data); 
    } 
}); 
return false; 
}); 
0

嘗試處理新加載的形式$('#sss').submit(function(evt) {});