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

9rbhqvlz  于 2023-10-17  发布在  jQuery
关注(0)|答案(1)|浏览(118)

我的问题是用ajax [ serializeArray()]从元素输入表单发送数据,但没有运气,因为parse_str()总是返回NULL值,但实际上数据是存在的
所以我是新的PHP的东西,我已经在互联网上搜索这个问题。目前的结果并不针对我的情况。
这只是一页代码,运行在PHP 8.2下,
代码的结构就像一个普通的输入表单,有一个表,有3个元素输入和1个提交按钮,当然每个元素的id。它也用form标签 Package ,ID是'frmdata'。
总之,表单和js验证工作正常,当输入为空时弹出显示。
在最后一个条件是else之后,所有的输入都被填满

let data = $('#frmdata').serializeArray();

在上面一行之后尝试找出变量中的内容[第一个警报]:

alet(data);

警报消息返回如下:**[object:object],[object:object],[object:object]**这正常吗?消息不返回我们在这3个元素中输入的值。

下一行是在一个alert块中,我写如下[第二个alert]:

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

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

对于上述问题,parse_str()语法始终显示NULL值
添加一些有关问题的信息。
因此,当aps发送数据到php,我写下面的代码

<?php
   
 If(isset($_POST)) {
      
     $_POST = parse_str($_POST['data'],$_POST);
     
     echo'<pre>';
     print_r($_POST);
     exho'</pre>;
     die();
 }
 
?>

浏览器返回null值

moiiocjp

moiiocjp1#

通常使用jQuery将表单数据发送到服务器进行处理的最简单方法是使用serialize。然后,如果您在POST请求中将其发送到PHP,则所有序列化字段都将在$_POST数组中可用,就像您使用常规表单提交一样。
因此,您不需要parse_strserializeArray$.param。你把事情弄得太复杂了
只是改变

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

数据:

$('#frmdata').serialize()

$.ajax请求代码中,并删除这一行:

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

相关问题