Прежде чем люди перепрыгнут со всех концов меня, я видел эту тему: Как мне PHP-unserialize jQuery-сериализованной формы?
Мой вопрос очень похож, но мои данные сильно отличаются. Я использую вызов AJAX для публикации, сообщения данных просто отлично (jQuery – 1,7). Форма & AJAX динамически загружается, когда пользователь нажимает на несколько ссылок и сводит к этому сценарию формы & ajax.
AJAX выглядит следующим образом: (Кстати, я знаю, что вы должны нам .on (), но я не могу заставить это работать, как я могу .live ())
$('#ajaxCaptionForm').live('submit', function(e){ e.preventDefault(); $.ajax({ 'type':'POST', 'data':{formData: $('#ajaxCaptionForm').serialize()}, 'success':function(){ parent.$.fancybox.close(); } }); }); // closing form submit
Форма выглядит так:
<form method="Post" action="localhost/controller" id="ajaxCaptionForm" name="ajaxCaptionForm"> <label for="Caption">Caption</label><input type="text" id="Caption" name="Caption" value="Leaf lesions."> <label for="Keywords">Keywords</label> <p>Please seperate keywords by a comma <input type="text" id="Keywords" name="Keywords" value=""></p> <input type="hidden" id="imageID" name="imageID" value="87595"> <input type="submit" value="Update Image" name="yt3" clicked="true"> </form>
Сериализованные данные выглядят следующим образом: (согласно Firebug)
formData=Caption%3DFruit%2Blesions.%26Keywords%3D%26imageID%3D87592
Когда я повторяю ответ, я получаю следующее:
"Caption=Leaf+symptoms+of+++CCDV.&Keywords=&imageID=87655"
Мои проблемы:
Как я могу получить доступ к каждой из переменных? Подпись, ключевые слова и изображения. $ _POST не работает, ни:
Yii :: приложение () -> request-> GetParam ( 'ImageID')
Похоже, что вы делаете сериализованные данные формы (которые уже должны быть URL-кодированными ключами = значениями), как значение в паре ключа-ключа JSON. Это то, что вы намереваетесь сделать?
От http://api.jquery.com/serialize/ обратите внимание, что данные формы, однажды отправленные через .serialize (), представляют собой текстовую строку в стандартной кодировке с кодировкой URL. "
От http://api.jquery.com/jQuery.ajax/ , обратите внимание, что параметр данных «преобразуется в строку запроса, если уже не строка».
Итак, вы берете текстовую строку в «стандартную кодировку с кодировкой URL», а затем присваиваете ей значение в паре JSON-значение ключа при настройке данных.
Я думаю, что вы могли бы быть чем-то вроде этого (игнорируйте проблему live () v. On ()):
$('#ajaxCaptionForm').live('submit', function(e){ e.preventDefault(); $.ajax({ 'type':'POST', 'data':$('#ajaxCaptionForm').serialize(), 'success':function(){ parent.$.fancybox.close(); } }); }); // closing form submit
Это также было бы причиной того, что вы не можете получить доступ к чему-либо, как ожидаете, поскольку все это передается под ключом formData. Вы можете сделать print_r ($ _ POST), чтобы проверить это, или echo Yii :: app () -> request-> getQueryString (); оба должны распечатать все данные, которые вы отправили в виде массива PHP, показывая вам ключи и значения.
В качестве предложения это прекрасный пример того, когда следует использовать консоль Firebug, чтобы точно определить, какие параметры отправляются.