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

问题描述 投票:0回答:1

我的问题是使用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();
   
       }
   
   });
   

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

对于上述问题,parse_str() 语法总是显示 NULL 值

添加一些有关问题的信息。

所以当ajax发送数据到php时,我写下面的代码

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

浏览器返回空值

php jquery arrays ajax
1个回答
0
投票

使用 jQuery 将表单数据发送到服务器进行正常处理的最简单方法是使用 serialize。然后,如果您在 POST 请求中将其发送到 PHP,则所有序列化字段都将在

$_POST
数组中可用,就像您使用常规表单提交它一样。

因此您不需要

parse_str
、或
serializeArray
$.param
。你让事情变得比需要的更复杂。

改变一下

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

数据:

$('#frmdata').serialize() 

$.ajax
请求代码中,删除此行:

$_POST = parse_str($_POST['data'],$_POST);
© www.soinside.com 2019 - 2024. All rights reserved.