使用php foreach jQuery序列化问题

时间:2011-05-20 11:31:19

标签: php jquery ajax serialization

$("#doStatus").click(function()
{
var serialized = $("#formStatus").serialize() 
 $.get("<?echo $site['url'];?>modules/yobilab/tuitting_core/classes/doStatusBox.php", serialized);
window.setTimeout('location.reload()', 1000);
return false;
});

此代码将返回如下内容:

tuitting=test&f%5B%5D=2&f%5B%5D=4&f%5B%5D=8&t%5B%5D=2&t%5B%5D=3&t%5B%5D=4

如果tuitting(第一个值)是textarea的值,那么我们有:

-f这是具有相同名称但值不同的某些检查箱的名称

-t其他复选框,相同名称,不同值

你可能会看到“f”和“t”的序列化函数返回奇怪的值,当它们只是简单的数字时,如tuitting = test&amp; f = 1&amp; f = 3&amp; t = 9&amp; t = 10

现在,当ajax调用doStatusBox.php文件时,没有任何反应。

doStatusBox.php文件是由一个简单的foreach php循环生成的。

将采用以下变量:

$_GET['tuitting']
$_GET['t']
$_GET['f']

Foreach` $ _GET ['t']和$ _GET ['f']循环会将相对值插入数据库。

这根本不起作用。 php foreach无法识别jQuery序列化函数给出的结果,并且不能做任何事情。

有什么问题?

我应该使用另一个函数而不是foreach?

或问题出现在jQuery序列化函数中?

请帮帮我。 `

1 个答案:

答案 0 :(得分:1)

由于我们无法看到您的HTML代码,我无法确定问题是什么,但我怀疑这是两个问题之一:

  1. (最有可能) - 您的复选框字段需要在名称后面加上[]。示例:name =“t []”。如果你的所有复选框都是name =“t”,那么当发布多个复选框时,PHP只会看到其中一个。但是,如果您在名称的末尾放置括号,PHP会将值集合识别为可以循环的数组。

  2. (不太可能) - 接收此数据的PHP脚本应对数据运行urldecode()。示例:$ tuitting = urldecode($ _ GET ['tuitting']);

  3. 希望这有帮助!