在PHP中解析jquery序列化字符串
在人们跳过我之前,我已经看到了这个post: 我如何PHP反序列化一个jQuery序列化的表单?
我的问题非常相似,但我的数据却大相径庭。 我正在使用AJAX调用来做post,数据发布很好(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
表格如下:
序列化数据看起来像:(根据firebug)
formData=Caption%3DFruit%2Blesions.%26Keywords%3D%26imageID%3D87592
当我回应一个回应时,我明白了:
"Caption=Leaf+symptoms+of+++CCDV.&Keywords=&imageID=87655"
我的问题是:
- 即使我放入内容,关键字字段也是空的
- 更改内容时,标题字段在post上不会更改。
-
我如何访问每个变量? 标题,关键字和图像。 $ _POST不起作用,也不起作用:
警予::应用程序() – >请求 – > getParam( ‘图像标识’)
您似乎正在将序列化表单数据(应该已经是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)来validation这一点,或者回显Yii :: app() – > request-> getQueryString(); 两者都应打印出您作为PHP数组提交的所有数据,向您显示键和值。
作为建议,这是何时使用Firebug控制台确切了解提交的参数的完美示例。