Отправьте форму с помощью JQuery, а затем загрузите результаты с внешней страницы в DIV - PullRequest
1 голос
/ 24 июня 2011

I.

Использование JQuery для отправки на другую страницу и загрузки результатов с внешней страницы в DIV. Не могу заставить это работать. Ниже код, который я использую:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
$('#msgform').submit(function () {
    $.post('blah.php', $('#msgform').serialize(), function (data, textStatus) {
         $('#msgresults').append(data);
    });
    return false;
});
});
</script>

<form id="msgform" action="blah.php" method="post" style="padding:0px;margin:0px;">
<input type="hidden" name="strmemid" value="someid" />
<textarea name="message" id="msgtextarea"></textarea>
<input type="submit" value="Submit" />
</form>

<div id="msgresults"></div>

II.

OK. Я использую плагин формы JQuery и получил обновление страницы и базы данных. Все, что мне сейчас нужно, это заменить предупреждение («Спасибо за ваш комментарий») тем, что обновляет или добавляет ответ с внешней страницы после отправки формы в DIV «msgresults». ТИА

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>

<script type="text/javascript"> 
$(document).ready(function() { 
$('#msgform').ajaxForm(function() { 
alert("Thank you for your comment!"); 
}); 
}); 
</script>

<div id="msgresults"></div>

III.

Наконец-то этот код работает

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#msgform').ajaxForm(function (data, textStatus) {
         $('#msgresults').append(data);
    });
}); 
</script>

1 Ответ

3 голосов
/ 24 июня 2011

Есть много вещей, которые могут пойти не так. Вы уверены, что запрос AJAX успешно возвращен? Я бы предложил перейти на

$.ajax({
  type: 'POST',
  url: 'blah.php',
  data: $('#msgform').serialize(),
  success: function (data, textStatus) {
     alert(data, textStatus);
     $('#msgresults').append(data);
  },
  error: function(xhr, status, e) {
    alert(status, e);
  }
});

Это поможет вам отладить ajax-часть вашего кода. $ .post не обрабатывает ошибки, поэтому (на мой взгляд) это почти никогда не хорошая идея, потому что вы всегда можете иметь сетевые ошибки, которые требуют обработки. С более новым jQuery у вас все еще есть метод .error () на xhr, поэтому я полагаю, что это альтернатива.

...