gpt4 book ai didi

php - 发布表单数据时出现 .serialize() PHP 错误

转载 作者:行者123 更新时间:2023-12-01 06:53:33 26 4
gpt4 key购买 nike

我正在使用 jQuery 的 .serialize() 将包含一些复选框和其他输入的表单数据发布到 PHP 脚本。

post.js:

$(function(){
$("#button").click(function(){
$.ajax({
type: "POST",
url: "post.php",
data: $("form#input").serialize(),

success: function(data){
$.getJSON('post.php', function(data) {
$.each(data, function(key, val) {

})
})
}
})
})
})

post.php:

$tags = array();
foreach($_POST['checkboxes'] as $key => $value){
$tags[] = "$value";
}
$json = array(
array(
"tags" => $tags,
),
);
echo json_encode($json);

如果我将 getJSON 指向 post.php,我会在错误日志中收到一条 PHP 警告,其中显示“PHP 警告:为 foreach() 提供的参数无效”,这会导致输入表单中的数据无法正确传递(即 foreach 之后的 fwrite 不写入任何内容)。如果我为 getJSON 引用另一个文件,例如 data.php,或者如果我根本不包含它,则该帖子可以正常工作。为什么会发生这种情况?我可以只存储数据并创建第二个脚本来返回 JSON 数据,但在一个脚本中完成这一切会更容易。

最佳答案

这是交易:

success: function(data){

在上面的片段中,您接收到的数据是返回的 json_encoded 字符串,其中包含 $tags 的键:值对,如您所定义。

$.getJSON('post.php', function(data) {

现在,在 getJSON 请求中,您没有传递任何值,并且 foreach 语句希望您发布复选框的值,以便可以解析它们并创建标签。我不太确定我理解您为什么要这样做,因为 success: function(data) 将 native 解析从服务器返回的 JSON 并为您做好准备。

$.each(data, function(key, val) {

如果您只是丢失了 $.getJSON 请求,并使用each 函数,您将迭代从服务器返回的标签。我相信这就是您想要的预期功能。

关于php - 发布表单数据时出现 .serialize() PHP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com