提问人:palsud4 提问时间:10/4/2023 最后编辑:palsud4 更新时间:10/5/2023 访问量:40
使用 $('#frmadata').serializeArray 从表单发送数据 返回原始 html 代码
send data from form with $('#frmadata').serializeArray return raw html code
问:
我的问题是使用 ajax [ serializeArray() ] 从元素输入形式发送数据,但没有运气,因为 parse_str() 总是重新调整 NULL 值,但实际上数据是存在的
所以我是PHP的新手,我已经在互联网上搜索了这个问题。结果目前与我的情况并不具体。
这只是一页代码,在 PHP 8.2 下运行
代码的结构就像一个普通的输入形式,有一个表格,里面有 3 个元素输入和 1 个提交按钮,当然每个元素的 ID。它也用 form 标签包装,id 是“frmdata”。
简而言之,表单和 JS 验证工作正常,当输入清空弹出窗口时显示。
在最后一个条件是 else 之后,所有输入都填满了
let data = $('#frmdata').serializeArray();
在上面一行之后,尝试找出 variabel [第一个警报] 中的内容:
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 值
添加一些关于 ptoblem 的信息。
所以当ajax向php发送数据时,我写了下面的代码
<?php
If(isset($_POST)) {
$_POST = parse_str($_POST['data'],$_POST);
echo'<pre>';
print_r($_POST);
exho'</pre>;
die();
}
?>
比浏览器返回 null 值
答:
使用jQuery将表单数据发送到服务器进行正常处理的最简单方法是使用序列化。然后,如果你在 POST 请求中将其发送到 PHP,所有序列化的字段都将在数组中可用,就像你用常规表单提交它一样。$_POST
因此,您不需要 、 或 或 。你让它变得比它需要的更复杂。parse_str
serializeArray
$.param
只是改变
data:{'data':$.param(data)}
到数据:
$('#frmdata').serialize()
在请求代码中,并删除以下行:$.ajax
$_POST = parse_str($_POST['data'],$_POST);
评论
is this normal
...是的,这就是 JS 在您尝试可视化对象或数组时显示的内容。它不是文本,所以 JS 无法确切地知道你希望它在屏幕上的显示方式Trying figure out what content inside variabel
...请改用。 是用来向用户显示消息的,不是用来调试的!console.log
alert
the parse_str() syntaks
...不清楚你在这里说什么,因为你没有显示相关的代码或数据。始终提供问题的最小可重现示例,并尝试在代码中一次专注于单个问题。另请参阅如何提问。谢谢。alert()