2016-08-27 2 views
1

У меня есть форма, когда при отправке страницы перезагружается и создается div с именем #message и отображается в теле. Я пытаюсь ajaxify мою форму, которую я сделал, но я застрял в том, как заставить сообщение отображаться без перезагрузки. Вот мой код ниже.Показать результат div после ajax form submit

$(document).ready(function(){ 
    $('input#submit').on('click', function() { 
    $('#form').submit(function() { 
     $.ajax({ // create an AJAX call... 
     data: $(this).serialize(), // get the form data 
     type: $(this).attr('method'), // GET or POST 
     url: $(this).attr('action'), // the file to call 
     success: function(response) { // on success.. 
     alert($('div#message').text()); // Alert the message text..fails 
     } 
     }); 
     return false; // cancel original event to prevent form submitting 
    }); 
}); 
}); 

<form action="settings.php" method="post" class="standard-form" id="form"> 
     <input type="text" name="email" id="email" value=""> 
     <input type="password" name="pass" id="pass" size="16" value="" class="password-entry" /> 
     <input type="submit" name="submit" value="<?php _e('Update'); ?>" id="submit" class="small button"/> 
</form> 

Update: Это новая функция, которую я пытаюсь, однако все, что получает извещение не является «[Объект] [объект]» и не сам текст. Я не уверен, что это значит.

$(document).ready(function(){ 
    $('input#submit').on('click', function() { 
    $('#form').submit(function() { 
     $.ajax({ // create an AJAX call... 
     data: $(this).serialize(), // get the form data 
     type: $(this).attr('method'), // GET or POST 
     url: $(this).attr('action'), // the file to call 
     success: function(data) { // on success.. 
     alert($('div#message').text(data)); 
     } 
     }); 
     return false; // cancel original event to prevent form submitting 
    }); 
}); 
}); 
+0

Что содержание «ответа» в вашей функции успеха? Кроме того, попробуйте предотвратить отправку формы по умолчанию с помощью e.preventDefault(); в функции отправки $ ("# form"). – kinduff

+0

Как выглядит html? И чтобы помочь отладить: удалите ваш вызов ajax. Убедитесь, что вы запрещаете отправку формы по умолчанию. Когда вы можете нажать кнопку отправки без перенаправления, вы можете добавить свой запрос ajax обратно. – Jasen

+0

@ Jasen Я не уверен, если вы думаете, что theyre является проблемой с перенаправлением. Нет никого, поэтому я сожалею, если это не ясно. Форма не перенаправляется. После отправки я, чтобы предупредить содержимое div, которое обычно будет присутствовать после отправки формы без ajax – LearntoExcel

ответ

2
$("form").on('submit', function(event) { 
    event.preventDefault(); // to prevent default page reloading 
    var dataString = $(this).serialize(); // to get the form data 

    $.ajax({ 
     type: "POST", 
     url: "post_process.php", 
     data: dataString, 
     success: function(data){ 
      $('form')[0].reset(); // to reset form data 
     } 
    }).done(function(data){ 
     alert(data); // This will be called after the ajax executed 
    }); 

}); 
+0

Я пробовал это, и что получает предупреждение: «[Object] [object]». Не то, что сообщение должно быть. Не уверен, что это значит. – LearntoExcel

+0

@LearntoExcel Обновите свой HTML-код, чтобы я мог дать вам более подходящий ответ. – Naresh

+0

Я обновил форму html @ e-Designary – LearntoExcel

0

Возможно, я пропустил то, что вы действительно хотите архивировать, но я надеюсь, что это все. Извините, если нет.

Когда я хочу отображать что-то новое без перезагрузки, я использую функцию .append(), которая делает дочерний элемент выбранному элементу.

Например, если я вызываю базу данных с ajax() и хочу отображать результаты в div, я выбираю div с jquery и добавляю результат к div в функции успеха.

$('#div').append('<p>Info here</p>') 

Это сделает «p-элемент», который является дочерним по отношению к div. И это будет отображаться без перезагрузки Подробнее о .append() здесь: http://api.jquery.com/append/

+0

Я думаю, что его отсутствует, чтобы добавить ответ: 'success: function (response) {alert ($ ('div # message'). Text (response)); } ' – kinduff

+0

Да, я думаю, вы правы. –

+0

Да, я знаком с добавлением. Проблема заключается в том, что div не создается до отправки формы, и я пытаюсь показать ее после вызова ajax. @kinduff – LearntoExcel