当前位置: 首页 > 知识库问答 >
问题:

Ajax>PHP>append json和表单数据

白云
2023-03-14

我是JS的初学者,以前从未接触过PHP。经过几个小时的搜索,我拼凑出了这一块。我想做的是,有一个简单的表单,里面有几个字段,这些字段被保存到一个JSON文件中。我希望每个后续条目都附加到文件的末尾,这样每个JSON对象就是这个人的名字和他们的注释。

通过下面的代码,我已经成功地将一些东西传递给PHP脚本,并将条目追加到json文件中。但是在json文件中显示的是这样的(在两个条目之后):

[{"data":"$data"},{"data":"$data"}]

这是我的HTML

        <form method="POST">

            <!-- NAME -->
            <div id="name-group" class="form-group">
                <label for="name">Name</label>
                <input type="text" class="form-control" name="name" placeholder="">
                <!-- errors will go here -->
            </div>

            <!-- EMAIL -->
            <div id="comment-group" class="form-group">
                <label for="comment">Comment</label>
                <input type="text" class="form-control" name="comment" placeholder="">
                <!-- errors will go here -->
            </div>

            <button type="submit" class="btn btn-success">Submit <span class="fa fa-arrow-right"></span></button>

        </form>

我的jQuery

$(document).ready(function() {
    // process the form
    $('form').submit(function(event) {
        // get the form data
        // there are many ways to get this data using jQuery (you can use the class or id also)
        var formData = {
            'name'              : $('input[name=name]').val(),
            'comment'             : $('input[name=comment]').val(),
        };
        // process the form
        $.ajax({
            type        : 'POST', // define the type of HTTP verb we want to use (POST for our form)
            url         : 'data/save.php', // the url where we want to POST
            data        : formData, // our data object
        })
            // using the done promise callback
            .done(function(data) {
                // log data to the console so we can see
                console.log(formData); 
                // here we will handle errors and validation messages
            });
        // stop the form from submitting the normal way and refreshing the page
        event.preventDefault();
    });
});

还有我的PHP

<?php
if( !empty( $_POST ) ){
$data = json_encode( $_POST );
if( json_last_error() != JSON_ERROR_NONE ){
exit;  
}
$file = file_get_contents('comments.json');
$data = json_decode($file);
unset($file);
$data[] = array('data'=>'$data');
file_put_contents('comments.json',json_encode($data));
unset($data);
}

?

谢谢

共有1个答案

颛孙安康
2023-03-14

您正在引用$data,这会阻止变量展开。您也没有将用户输入参数放入数组,而是尝试使用$data将数组放入自身。

$data[] = array('name' => $_POST['name'], 'comment' => $_POST['comment']);

如果要将变量插入字符串,必须使用双引号,而不是单引号。查看PHP中单引号字符串和双引号字符串之间的区别?

我看不出调用json\u encode($\u POST)的代码有什么意义。这不会对post数据执行任何有用的验证,因为可以发布的任何内容都可以进行编码。

在Javascript中也不需要使用FormData。通常只有在上传文件时才需要这样做。对于其他输入,可以使用。序列化()方法:

    var formData = $(this).serialize();
 类似资料:
  • 您好,我知道这个主题以前就有人提出过,但是没有人像我这样做过AJAX操作标准。我是AJAX和jQuery的新手 我这里的问题是,我不确定js函数“ajaxPostCallManip()”是否达到“login.php”!! 我发了几个警报,但没有出现...请帮帮忙 超文本标记语言代码 js代码 PHP代码

  • 问题内容: 如何将表单数据保存在文件或本地db(也许使用AJAX)中,该文件或数据通过表单操作将数据发送到外部db? 我的表单的源代码在这里:http : //jsbin.com/ojUjEKa/1/edit 我应该对代码进行哪些更改(如果有)? 对。因此,我能够使用AJAX将数据存储到localStorage中,并希望将存储的数据发送到名为backend.php的文件中。这是我的html文件:

  • 问题内容: 我找到了一个自动提交表单数据的教程,但我要做的就是添加一个提交按钮以将数据传递给ajax。 我的目标是创建一个具有多个输入的表单,当用户单击“提交”按钮时,它将通过ajax发送并更新页面,而无需重新加载页面。另外,另一个关键是将所有输入发布到数组中的方式,以便在运行更新脚本时,输入字段中的名称属性与数据库中的列匹配。 我想我接近了。我已经搜索过,但没有找到确切的解决方案。提前致谢。 u

  • 我正在为我的项目构建一个ajax/php联系表单,包含以下字段: 姓名(必填)、电子邮件(必填)、主题(必填)和网站(必填) 一切正常,现在唯一的问题是,如果用户没有在主题和或网站字段中键入任何内容,我收到的电子邮件显示这两个字段如下: 主题:(显示空白) 网址:(显示空白) 如果用户没有在我收到的电子邮件中键入任何内容,是否可能根本不显示这两个字段 名称:[用户名] 邮箱:[用户邮箱地址] 我只

  • 问题内容: 我正在忙于开发一个网站,该网站的右上角有一个登录框。我希望用户能够在不刷新的情况下登录同一页面。 好的,我已经开始工作了,但是我仍在努力登录后的过程,如下所示: (HTML) (PHP) (我的jQuery) (isLoggedIn.php) (isNotLoggedIn.php) 登录过程可以正常工作,但是注销混乱。当我单击isLoggedIn.php中的Logout链接时,它注销了

  • 我正在尝试使用ajax发送表单数据。我的索引页面记录是在使用ajax从远程页面获取后显示的。 下面是我的页面图片。 每个记录都有注释框,我想使用ajax将这些注释存储在数据库中。 下面是我的jquery 我在单击时使用了,因为这些记录是从远程页面加载的。我的表格在下面 现在当我点击帖子时,评论正在为最后一条记录工作。我需要发送ID号和文本区值到PHP页面更新在mysql,但两个评论都显示相同的记录