在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 

表格如下:

 

Please seperate keywords by a comma

序列化数据看起来像:(根据firebug)

 formData=Caption%3DFruit%2Blesions.%26Keywords%3D%26imageID%3D87592 

当我回应一个回应时,我明白了:

 "Caption=Leaf+symptoms+of+++CCDV.&Keywords=&imageID=87655" 

我的问题是:

  1. 即使我放入内容,关键字字段也是空的
  2. 更改内容时,标题字段在post上不会更改。
  3. 我如何访问每个变量? 标题,关键字和图像。 $ _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控制台确切了解提交的参数的完美示例。