我有一個擁有投票投票模塊的網站。輪詢控制器通過POST
請求接受投票,該請求包含輪詢ID和響應ID作爲http://example.com/poll
的參數。用jQuery的.post()方法只選擇HTML頁面的一部分?
本網站的站點範圍模板以側欄中的當前輪詢爲特徵;它是一個簡單的形式,action
屬性設置爲上述URL。然而,我正在用jQuery強行提供異步投票。
這是功能我迄今:
$('form.poll').submit(function() {
var form = this;
var response = $('div.response', form);
if ($('input:checked', form).length == 0) {
response.fadeOut('fast', function() {
$(this).html('<p class="error">Please select an option.</p>').fadeIn('fast');
})
}
else {
var action = $(form).attr('action');
$.post(action, $(form).serialize(), function(data) {
alert('Data loaded: ' + data);
});
$('fieldset', form).fadeOut('fast');
response.fadeOut('fast', function() {
$(this).html('<p class="success">Vote successfully added.</p>').fadeIn('fast');
});
}
return false;
});
正如你所看到的,它只是截取提交一個表單,然後使用jQuery,而不是一個完整的頁面請求執行POST
,讓訪問者永遠離開他們所在的頁面。
我的問題是:整個頁面的HTML返回$.post
響應(調用alert()
調用的行)。如何挑選返回的HTML的#content
<div>
標記的內容,以用作我的投票表單中的回覆?該加價爲投票的形式是:
<form action="/poll" method="post" id="poll" class="poll">
<h3>Poll</h3>
<p class="question">Who do you think will win the Lockdown main event?</p>
<div class="response"><!--//--></div>
<fieldset>
<input type="hidden" name="poll" value="1" />
<ul class="options">
<li><label for="option_1"><input type="radio" name="response" value="1" id="option_1" /> Mr Anderson</label></li>
<li><label for="option_2"><input type="radio" name="response" value="2" id="option_2" /> Rob Van Dam</label></li>
<li><label for="option_3"><input type="radio" name="response" value="3" id="option_3" /> Sting</label></li>
</ul>
<input type="submit" name="vote" value="Vote" class="button" />
</fieldset>
</form>
我想插入響應到恰當地命名爲.response
div
標籤。任何幫助,指針或建議將不勝感激。
值得注意的是'HTTP_X_REQUESTED_WITH'頭部在技術上不是任何規範的一部分,但它至少相當一致。其他建議作爲替代方法的檢查方式是在您的AJAX請求中傳遞附加的GET/POST變量並檢查是否存在該變量。無論哪種方式,當你只需要一部分文件時就會帶回整個文檔,這是浪費帶寬和時間。 – Steve 2011-04-19 12:32:33