2010-11-02 5 views
0

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

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

<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 alert выводит ожидаемый массив, который, на мой взгляд, преобразуется в строку. Но когда я представляю form.data, мой PHP:

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

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

массиву ([данные] =>)

Любые идеи, почему ничего не передается?

Приветствия, Энди

ответ

3

Вы должны ждать возвращения функции:

onSubmit="return sendData()" 

В противном случае форма будет отправлена ​​немедленно и does'nt ждать, пока данные изменяются.

внутри функции заменить этот

document.data.submit(); 

с этим:

return true; 

Кроме того: если вы используете это как jquery.json-2.2.js:
http://code.google.com/p/jquery-json/downloads/detail?name=jquery.json-2.2.js&can=2&q=
ме- наименование
$.toJSON вместо $.toJson

+0

Форма в настоящее время отправляется только после того, как сразу же нажата кнопка «Отправить» ... однако я изменил ее в соответствии с вашим предложением, но это не имело значения ... – Andy

+0

Вот что я имею в виду, если нажать кнопку отправки, без предложенных изменений в форме не будет ждать, пока функция манипулирует полем. Могут быть и другие ошибки, которые препятствуют отправке формы предполагаемого значения, но мое предложение обязательно в любом случае. –

+0

ОК спасибо за это, я изменил его сейчас. Еще ничего не получено на стороне php, хотя ... – Andy

1

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

+0

И не должен document.data.data.value = $ .toJson (данные); be document.data.value = $ .toJson (данные); ? – Repox

+0

Совершенно верно, я изменю это. Любые мысли по моему вопросу? – Andy

+0

Я изменил его на: document.dataform.data.value = $ .toJson (данные); – Andy

Смежные вопросы