Форма обратной связи с использованием плагина PHP и jQuery - PullRequest
0 голосов
/ 03 декабря 2009

Я использую плагин jQuery Form для отправки запросов AJAX. Это простой контакт с использованием этого сценария PHP: http://pastie.org/725652 - единственная проверка происходит внутри PHP.

Вот мой код Javascript для запуска всего этого:

$('#contactform').ajaxForm({
    target: '#error',
    beforeSubmit: function() {
        $('#error').append('<p class="loading">Sending your message...</p>');
    },
   success: function() {
       $('#error p.loading').fadeOut();
       $('#error').fadeIn('slow');
    }
});

К сожалению, это не похоже на работу. PHP работает отлично, отправляет электронное письмо и возвращает сообщение об успехе, но магия AJAX по какой-то причине не работает. Очевидно, что я хочу достичь, это отобразить сообщение, возвращаемое сценарием PHP через AJAX в <div id="error />

Я использовал один и тот же сценарий много раз и у меня никогда не было проблем с ним, теперь я не могу понять, почему он не работает. Вот разметка для контактной формы.

<form id="contactform" class="group" method="post" action="submitemail.php">
    <fieldset>
        <div><label for="first-name">First Name</label>
        <input type="text" name="first-name" value="Jeremy" /></div>

        <div class="alt"><label for="last-name">Last Name</label>
        <input type="text" name="last-name" value="Anderson" /></div>

        <div><label for="email">E-mail <span>(never published)</span></label>
        <input type="text" name="email" value="jeremyanderson@mywebsite.com" /></div>

        <div class="alt"><label for="url">Website</label>
        <input type="text" name="url" value="http://www.mywebsite.com" /></div>

        <label for="question">Message</label>
        <textarea name="question" id="" cols="30" rows="10">Thinking of something to say...</textarea>

        <input type="submit" name="submit" id="submit" value="Send E-mail" />
        <div id="error"></div>
    </fieldset>
</form>

Вот код плагина jQuery, если он может помочь. http://pastie.org/726175

Если бы кто-нибудь мог взглянуть на все это и дать несколько советов, почему это не сработало, я был бы очень признателен, заранее спасибо!

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Вы должны включить параметры, в которых есть ответ от PHP:

EDIT:

попробуйте с этими изменениями, в этом примере я разделяю сообщение "загрузка" с ответным сообщением.

HTML:

<form id="contactform" class="group" method="post" action="submitemail.php">
    <fieldset>
        <!-- fields -->

        <input type="submit" name="submit" id="submit" value="Send E-mail" />
        <div id="error"><span id="eloading"></span><span id="eresponse"></span></div>
    </fieldset>
</form>

Javascript:

$('#contactform').ajaxForm({
    target: '#eresponse',
    beforeSubmit: function() {
        $('#eresponse').hide('slow');
        $("#eloading").append("<p class=\"loading\">Sending your message...</p>");
    },
    success: function(responseText, statusText) {

        alert("test status: " + statusText + "\n\nresponseText: \n" + responseText);
        $("#eloading").empty();
        $('#eresponse').show('slow');
    }
});
0 голосов
/ 04 декабря 2009

Это не сработало :( Это все еще переходит в файл submitemail.php с сообщение об успехе вместо показа сообщение в #error. - Жюстин 39 минут назад

Если это происходит, это означает, что функция, присоединенная к событию отправки, не заканчивается на

return false;

Я считаю, что с помощью ajaxForm это делается автоматически, что означает, что где-то есть ошибка в вашем коде. Если у вас не установлен firebug, установите его и следите за консолью:

  1. JQuery загружается нормально
  2. нет ошибки при настройке AJAX взаимодействие или в любом другом JS на страница, которая может остановить это
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...