我的问题是使用ajax [serializeArray()]从元素输入表单发送数据,但没有运气,因为parse_str()总是返回NULL值,但实际上数据是存在的
所以我对 PHP 很陌生,我在互联网上搜索了这个问题。结果目前与我的情况并不具体。
这只是一页代码并在 PHP 8.2 下运行
代码的结构就像一个普通的输入表单,有一个表,有3个元素输入和1个提交按钮,当然还有每个元素的id。它也用表单标签包裹,id 是“frmdata”。
简而言之,表单和js验证工作正常,当输入为空时弹出显示。
最后一个条件是 else 之后,所有输入都被填满
let data = $('#frmdata').serializeArray();
就在上面一行之后尝试找出变量中的内容[第一个警报]:
alet(data);
警报消息返回如下:** [object:object],[object:object],[object:object] ** 这是正常的吗?该消息不返回我们在这 3 个元素中键入的值。
下一行在 ajax 块内,我的写法如下[第二个警报]:
$.ajax ({
url:"tes.php",
method:"post",
data:{'data':$.param(data)},
success:function(data) {
alert(data);
window.location.reload();
}
});
对于上述问题,parse_str() 语法总是显示 NULL 值
添加一些有关问题的信息。
所以当ajax发送数据到php时,我写下面的代码
<?php
If(isset($_POST)) {
$_POST = parse_str($_POST['data'],$_POST);
echo'<pre>';
print_r($_POST);
exho'</pre>;
die();
}
?>
浏览器返回空值
使用 jQuery 将表单数据发送到服务器进行正常处理的最简单方法是使用 serialize。然后,如果您在 POST 请求中将其发送到 PHP,则所有序列化字段都将在
$_POST
数组中可用,就像您使用常规表单提交它一样。
因此您不需要
parse_str
、或 serializeArray
或 $.param
。你让事情变得比需要的更复杂。
改变一下
data:{'data':$.param(data)}
数据:
$('#frmdata').serialize()
在
$.ajax
请求代码中,删除此行:
$_POST = parse_str($_POST['data'],$_POST);