Как отправить форму с помощью AJAX / JSON?

В настоящее время мой AJAX работает следующим образом:

index.php

<a href='one.php' class='ajax'>One</a> <div id="workspace">workspace</div> 

one.php

 $arr = array ( "workspace" => "One" ); echo json_encode( $arr ); 

ajax.js

 jQuery(document).ready(function(){ jQuery('.ajax').live('click', function(event) { event.preventDefault(); jQuery.getJSON(this.href, function(snippets) { for(var id in snippets) { jQuery('#' + id).html(snippets[id]); } }); }); }); 

Над кодом работает отлично. Когда я нажимаю ссылку «Один», тогда выполняется one.php, а строка «Один» загружается в рабочее пространство DIV .

Вопрос:

Теперь я хочу отправить форму с AJAX. Например, у меня есть форма в index.php, как это.

 <form id='myForm' action='one.php' method='post'> <input type='text' name='myText'> <input type='submit' name='myButton' value='Submit'> </form> 

Когда я отправляю форму, тогда one.php должен печатать значение текстового поля в рабочей области DIV.

 $arr = array ( "workspace" => $_POST['myText'] ); echo json_encode( $arr ); 

Как закодировать js для отправки формы с помощью AJAX / JSON.

благодаря

Отправка формы проста:

 $j('#myForm').submit(); 

Однако это будет опубликовать всю страницу.

Сообщение через вызов Ajax также легко:

 $j.ajax({ type: 'POST', url: 'one.php', data: { myText: $j('#myText').val(), myButton: $j('#myButton').val() }, success: function(response, textStatus, XMLHttpRequest) { $j('div.ajax').html(response); } }); 

Если вы хотите что-то сделать с результатом, у вас есть два варианта – вы можете либо явно установить функцию success (что я сделал выше), либо вы можете использовать метод вспомогательной load :

 $j('div.ajax').load('one.php', data); 

К сожалению, есть один беспорядочный бит, за которым вы застряли: заполнение этого объекта data переменными формы для публикации.

Однако это должен быть довольно простой цикл.

Вот мое полное решение:

 jQuery('#myForm').live('submit',function(event) { $.ajax({ url: 'one.php', type: 'POST', dataType: 'json', data: $('#myForm').serialize(), success: function( data ) { for(var id in data) { jQuery('#' + id).html(data[id]); } } }); return false; }); 

$.ajaxSubmit функцию $.ajaxSubmit в $.ajaxSubmit формы jQuery . Должно быть так же просто, как

  $('#myForm').ajaxSubmit(); 

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

Вы можете отправить форму с $.ajax метода $.ajax jQuery следующим образом:

 $.ajax({ url: 'one.php', type: 'POST', data: $('#myForm').serialize(), success:function(data){ alert(data); } });