в настоящее время у меня есть следующий код:
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
Подсказка: я использую этот ответ для выполнения той же задачи в событии кликов ссылки. Но как это сделать при подаче формы?
благодаря
Вы просто хотите разобрать этот 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; });