PHP: проблема отправки формы в AJAX / JSON?

в настоящее время у меня есть следующий код:

home.php

<form name='myformname' id='myformid'> <input type='text' name='mytext1' value='abc'> <input type='text' name='mytext2' value='123'> <input type='submit' value='Submit'> </form> <div id='textone'></div><div id='texttwo'></div> 

_home.php

 $arr = array( 'textone' => $_POST['mytext1'], 'texttwo' => $_POST['mytext2'] ); echo json_encode( $arr ); 

ajax.js

 jQuery('#myformid').live('submit',function(event) { $.ajax({ url: '_home.php', type: 'POST', data: $('#myformid').serialize(), success: function( data ) { // TODO: write code here to get json data and load DIVs instead of alert alert(data); } }); return false; }); 

Выход на submit:

 {"textone":"abc","texttwo":"123"} 

Вопрос

Я хочу загрузить значение mytext1 в textone DIV и значение mytext2 в texttwo DIV, используя json-данные в _home.php

Подсказка: я использую этот ответ для выполнения той же задачи в событии кликов ссылки. Но как это сделать при подаче формы?

благодаря

Related of "PHP: проблема отправки формы в AJAX / JSON?"

Вы просто хотите разобрать этот JSON и установить divs в значения, которые он содержит правильно?

 var divs = JSON.parse(data); for (var div in divs) { document.getElementById(div).innerHTML = divs[div]; } 

(Синтаксис предыдущего плаката, вероятно, больше похож на то, что вам нужно, и, возможно, совместим с несколькими браузерами, но не включает разбор JSON.)

Поскольку JSON – это всего лишь подмножество JavaScript, вы можете просто eval () его. JSON.parse () в основном делает это, но дает вам заверения в том, что если «данные» содержат какой-то неприятный код вместо простого объекта, он не будет оцениваться.

В функции успеха

 for (prop in data){ $('#' + prop).html(data[prop]); } 

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

 jQuery('#myformid').live('submit',function(event) { $.ajax({ url: '_home.php', type: 'POST', dataType: 'json', data: $('#myformid').serialize(), success: function( data ) { for(var id in data) { //jQuery('#' + id).html(data[id]); // This will also work document.getElementById(id).innerHTML = data[id]; } } }); return false; });