JSON не передает данные массива в PHP - PullRequest
0 голосов
/ 02 ноября 2010

Я пытаюсь изменить свой код для использования json по рекомендации из предыдущего вопроса, чтобы немного упростить ситуацию ...

На стороне клиента:

<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../js/jquery.tablednd_0_5.js"></script>
<script type="text/javascript" src="../js/jquery.json-2.2.js"></script>

<script type="text/javascript">
    $(document).ready(function() {
        $('#table').tableDnD();
    });
    function sendData() {
        data = $('#table').tableDnDSerialize();
        alert(data); // shows expected data
        document.dataform.data.value = $.toJson(data);
        document.data.submit();
    }
</script>

<form action="$php_page_name" method="post" name="dataform" onSubmit="sendData()">
    <input type="hidden" name="data" />
    <input type="submit" value="Submit" />
</form>

Предупреждение js выводит ожидаемый массив, который, я думаю, преобразуется в строку к этому моменту. Но когда я отправляю form.data, мой php:

$data = json_decode($_POST['data']);
print_r($data);
print_r($_POST);

возвращает только:

Array ([data] =>)

Есть идеи, почему ничего не передается?

Ура, Andy

Ответы [ 2 ]

3 голосов
/ 02 ноября 2010

Вам нужно дождаться возврата функции:

onSubmit="return sendData()"

В противном случае форма будет отправлена ​​немедленно и не будет ждать изменения данных.

внутри функции replaceэто

document.data.submit();

с этим:

return true;

Более того: если вы используете это как jquery.json-2.2.js:
* 1015имя метода
$.toJSON вместо $.toJson

1 голос
/ 02 ноября 2010

старайтесь не называть элементы одинаковыми. Ваша форма называется «данные», как и ваш скрытый ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...