PHP: Проблемы с отправкой формы в AJAX / JSON? - PullRequest
0 голосов
/ 17 августа 2010

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

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;
});

Вывод при отправке:

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

Вопрос

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

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

Спасибо

Ответы [ 3 ]

1 голос
/ 18 августа 2010

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

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

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

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

1 голос
/ 18 августа 2010

Вот мое полное решение 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;
});
1 голос
/ 18 августа 2010

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

for (prop in data){
    $('#' + prop).html(data[prop]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...