Моя форма jquery ajax не будет опубликована - PullRequest
0 голосов
/ 11 августа 2009

Ниже приведен код, над которым я работаю, это будет система комментариев, поток:

  1. Пользователь заполняет форму комментария
  2. нажмите кнопку Отправить, вызов AJAX и POST к php скрипту

  3. скрипт определяет, должен ли пользователь введите форму с картинки

  4. Если им нужна форма для проверки, она отправляет этот ответ обратно вместе с там продезинфицированное сообщение

  5. Если им не нужна капча, то дезинфицирует сообщение и отправляет его назад с успешным ответом

  6. Если есть ошибка, он отправляет сообщение об ошибке назад.

  7. В случае успеха мы также добавляем сообщение на страницу

Хорошо, мои проблемы пока в том, что когда я нажимаю на submit, он перезагружает страницу вместо вызова ajax, вы видите какие-либо очевидные причины? <script type="text/javascript"> $(document).ready(function () { $('#load').hide(); //load facebox $('a[rel*=facebox]').facebox() }); // add comments var messageArea = $('textarea#message'); $('input#submit-comment').click(function () { // Store vars var message = messageArea.hide().val(); var dataString = 'message=' + message + '&u=1'; //send comment to php $.ajax({ type: "POST", url: "process.php", data: dataString, dataType: "json", success: function (data) { if (json.response == 'captcha') { //they are mass posting so we need to give them the captcha form // maybe we can open it in some kind of dialog like facebox // have to figure out how I can pass the comment and user data to the captcha script and then post it jQuery.facebox(function () { jQuery.get('captchabox.php', function (data) { jQuery.facebox('<textarea>' + data + '</textarea>') }) }) alert('captcha'); } else if (json.response == 'error') { // there was some sort of error so we will just show an error message in a DIV // just an alert for testing purposes alert('sorry there was an error'); } else if (json.response == 'success') { alert('sucess'); // success append the sanitized-comment to the page $('#comments').prepend(obj.comment); }; } }) return false; }); </script> <div id="container"> <div id="comments"> <!-- comments loop will be here from mysql results --> <div class="comment"> <div class="date"> <span class="day-month"><?php echo $dayMonth; ?></span> <span class="year"><?php echo $year; ?></span> </div> <span class="content"><?php echo stripslashes($message);?> <span class="time"><?php echo $datediff; ?></span></span> <div class="clear"></div> </div> <!-- end comment loop--> </div> <div id="submission"> <form name="comment-submission"> <textarea id="message" name="message"></textarea> <span class="limit">140</span> <input type="submit" id="submit-comment" value=" " /> </form> <div class="clear"></div> </div> </div> ОБНОВЛЕНИЕ :

Я добавил взамен ложный; незадолго до закрытия функции click под вызовом ajax, но она не внесла изменений на странице, она по-прежнему перезагружает страницу при нажатии, любая помощь, пожалуйста

Ответы [ 3 ]

2 голосов
/ 11 августа 2009

Вам нужно «вернуть ложь»; в конце события click () или измените

<input type="submit"...>

до

<input type="button"...>
1 голос
/ 11 августа 2009

Добавьте return false; после вашего звонка $.ajax(). Это предотвратит действие по умолчанию для элемента submit.

0 голосов
/ 11 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...