2017-01-17 6 views
-1

Я понимаю, что Ajax - это признанный способ отправки формы без обновления страницы, но для этого требуется циклическое перемещение по каждому полю и построение строки Post для отправки.Отправка формы без обновления страницы

Нет ли альтернативного способа использования встроенных функций браузеров для отправки формы, но перехвата возвращаемого html, чтобы остановить обновление страницы?

Edit: Не такое же, как предложил дубликат, который спрашивает о проверке формы: «Я хотел, чтобы запустить яваскрипт проверки пользователя»

Edit2: Основная проблема заключается в том, чтобы остановить реакцию серверов на представить от перехода на новую страницу. Есть ли что-то, на что сервер мог бы ответить, и что бы остановить обновление всей страницы?

Редактировать 3: Как насчет возврата ответа HTTP 204: Сервер получил запрос, но нет никакой информации для отправки назад, и клиент должен оставаться в том же виде документа. Это, главным образом, чтобы вход для сценариев без изменения документа в то же время

+1

Возможный дубликат [HTML формы действий и onsubmit вопросов] (http://stackoverflow.com/questions/16262797/html-form-action-and-onsubmit-issues) –

ответ

1

да есть .. Идея заключается в том, чтобы иметь форму действия и onsubmit событие перевалено

Рассмотрим код ниже:

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
Name: <input type="text" name="fname"> 
<input type="submit" value="Submit"> 
</form> 

function validateForm() { 
    var x = document.forms["myForm"]["fname"].value; 
    if (x == "") { 
     alert("Name must be filled out"); 
     return false; 
    } 

} 

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

простого способа сделать это, если вы используете JQuery, чтобы сериализовать данные с использованием http://api.jquery.com/serialize/ функциональности

один из способов сделать это, если вы используете JQuery :

<form id="myForm" name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 


function validateForm() { 
    var x = document.forms["myForm"]["fname"].value; 
    if (x == "") { 
     alert("Name must be filled out"); 
     return false; 
    } 

    var url = $('#myForm').attr('action'); 
    var data = $('#myForm').serialize(); 
    $.post(url, data); 
} 
Смежные вопросы