使用 $('#frmadata').serializeArray 从表单发送数据 返回原始 html 代码

send data from form with $('#frmadata').serializeArray return raw html code

提问人:palsud4 提问时间:10/4/2023 最后编辑:palsud4 更新时间:10/5/2023 访问量:40

问:

我的问题是使用 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 个元素中键入的值。

alerting content of serializeArray

下一行在ajax块中,我写如下[第二个警报]:

 $.ajax ({
    url:"tes.php",
    method:"post",
    data:{'data':$.param(data)},
   success:function(data) {
   
         alert(data);
         window.location.reload();
   
       }
   
   });
   

对于第二个警报,内容只是原始 HTML 代码。alerting param data

对于上面的这些问题,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 值

tje parsing object failed, returning null

php jquery 数组 ajax

评论

0赞 ADyson 10/4/2023
is this normal...是的,这就是 JS 在您尝试可视化对象或数组时显示的内容。它不是文本,所以 JS 无法确切地知道你希望它在屏幕上的显示方式
0赞 ADyson 10/4/2023
使用jQuery将表单数据发送到服务器进行正常处理的最简单方法是使用序列化。然后,如果你在 POST 请求中将其发送到 PHP,所有序列化的字段都将在 $_POST 数组中可用,就像你用常规表单提交它一样。当从 AJAX 请求接收到数据时,您没有展示您当前如何尝试在 PHP 中读取数据,但这是标准方法。
0赞 ADyson 10/4/2023
Trying figure out what content inside variabel...请改用。 是用来向用户显示消息的,不是用来调试的!console.logalert
0赞 ADyson 10/4/2023
the parse_str() syntaks...不清楚你在这里说什么,因为你没有显示相关的代码或数据。始终提供问题的最小可重现示例,并尝试在代码中一次专注于单个问题。另请参阅如何提问。谢谢。
1赞 Álvaro González 10/4/2023
现在所有主流浏览器都有开发者工具。而是在 中打印服务器响应,只需在“网络”窗格的“响应”窗格中查看即可。alert()

答:

0赞 ADyson 10/5/2023 #1

使用jQuery将表单数据发送到服务器进行正常处理的最简单方法是使用序列化。然后,如果你在 POST 请求中将其发送到 PHP,所有序列化的字段都将在数组中可用,就像你用常规表单提交它一样。$_POST

因此,您不需要 、 或 或 。你让它变得比它需要的更复杂。parse_strserializeArray$.param

只是改变

data:{'data':$.param(data)} 

到数据:

$('#frmdata').serialize() 

在请求代码中,并删除以下行:$.ajax

$_POST = parse_str($_POST['data'],$_POST);