У меня есть веб-сайт с модулем голосования. Контроллер опроса принимает голос через POST
запрос, содержащий идентификатор опроса и идентификатор ответа в качестве параметров для http://example.com/poll
.
Общесайтовый шаблон этого сайта показывает текущий опрос на боковой панели; это простая форма с атрибутом 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;
});
Как видите, он просто перехватывает отправляемую форму, а затем выполняет POST
, используя jQuery, а не запрос полной страницы, поэтому посетитель никогда не покидает страницу, на которой он находится.
Моя проблема: весь HTML-код страницы возвращается в ответе $.post
(строка с вызовом alert()
). Как я могу выбрать содержимое возвращаемого тега #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
тег. Любая помощь, указатели или предложения будут высоко оценены.