【问题标题】:convert form data using serializeArray() and sending php via .Ajax使用 serializeArray() 转换表单数据并通过 .Ajax 发送 php
【发布时间】:2017-05-22 13:47:24
【问题描述】:

这是我的第一篇文章。我已经搜索了其他解决方案,而我发现的仅涉及该问题的组成部分。基本上这就是我想做的:

  • 捕获表单数据(测试,工作);
  • 使用 serializeArray() 或 serialize() 转换表单数据(测试了这两个选项,正常工作并输出到控制台);
  • 通过Ajax将此信息发送到服务器(不工作);和
  • PHP 将数组保存为 CSV(尚未开始)。

下面是我正在使用的代码。但首先,这里有一些我尝试过的替代方案。通常我得到这个: array(0) { }

  • 'dataType' as Json - 返回错误;
  • 'GET'、'POST' 和 'REQUEST' - PHP 显示空数组;
  • 使用 form.serialize() - PHP 显示空数组;
  • 使用 form.serializeArray() - PHP 显示空数组;和
  • var_dump($_POST)、var_dump($_GET)、var_dump($_REQUEST)。

    var serialisedForm = $(form).serializeArray();
    
    var serialisedData = JSON.stringify(serialisedForm);
    console.log(serialisedData); //working
    console.log(serialisedForm); //working
    
    $.ajax({
        type: "POST",
        url: "datacapture.php",
        data: {
            serialisedForm, //tested using serialisedData as well
        },
        success: function() {
            window.open('datacapture.php');
        },
        error: function() {
            alert("the form data has not been sent to the server");
        }
    })  
    

这是我用来测试信息流的 datacapture.php 脚本。

<?php 

var_dump($_POST);

?>

编辑 - 这是一个示例表单项,从我的 settings.json 文件中读取 .text 和 .name:

<tbody>
                {
                this.props.settings.schemes[0].questions.map((q, i)=> {
                    return <tr><td>{q.text}</td><td><div class="YesNo"><input type="radio" required name={q.name} value="yes">Yes</input><input type="radio" required name={q.name} value="no">No</input></div></td></tr>
                })
                }
            </tbody>

【问题讨论】:

  • 只需将 data: { serialisedForm, //tested using serialisedData } 改为 data: serialisedForm
  • 谢谢,Ranjeet,但 var dump 仍然返回“array(0) { }”
  • 在控制台查看请求,参数将如何发送..!
  • 你能发布你的html吗?什么是表单 ID 或类?
  • 完整的 .jsx 超过 1,000 行。所有工作正常并通过输出到控制台进行测试。无论如何,这是一个从我的 settings.json 文件中读取值的示例问题:

标签: javascript php ajax forms


【解决方案1】:

只需将 1seralisedForm1 更改为 1seralisedData1 它将返回一个 json 对象到 php 可以通过以下操作看到:

echo json_decode($_POST);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2019-08-09
    相关资源
    最近更新 更多