如何从php文件中的FormData获取数据

2024-01-28

我有以下表格:

<form id="f-comment" class="form" method="post" action="submit_img_comment.php">
    <textarea name="comment"></textarea>
    <input type="submit" value="Publish" data-params='{"imageid":<?php echo $imageid; ?>}'>
</form>

以及以下 JavaScript:

$(document).on("submit", ".form", function(e) {
    e.preventDefault();

    // what form are you submitting?
    var form = $("#" + e.target.id);

    var data = new FormData(this);
    var params = $("input[type=submit]", this).data("params"); // parameters to send along with data
    data.append("params", params);

    // data is ok
    console.log(params)

    $.ajax({
        type: form.attr("method"),
        url: "include/" + form.attr("action"),
        data: data,
        dataType: "json",
        contentType: false,
        processData: false,
        cache: false
    }).done(function(data) {
        alert(data['msg']);
    }).fail(function(data) {
        alert("Error: Ajax Failed.");
    }).always(function(data) {
        // always do the following, no matter if it fails or not
    })
});

在我的 php 文件(submit_img_comment.php)中,我能够获得评论,如下所示

$_POST['comment'];

但是,当我尝试获取 imageid 时,就像这样

$_POST['imageid'];

我收到错误:未定义索引:imageid

注释是表单的一部分,但 imageid 作为参数发送并附加在 FormData 中。

如何获取 php 文件中的 imageid?


您对这一切的看法都是错误的,您附加到表格中的内容不是imageid but params。另外,您发送的是一个 javascript 对象,您需要先将其转换为字符串。您需要在 JavaScript 中执行以下操作:

var data = new FormData(this);
var params = $("input[type=submit]", this).data("params"); // parameters to send along with data
var json_params = JSON.stringify(params); // This converts your javascript object into a string that you can send to the server.
data.append("params", json_params); // We are adding the string we have converted from the javascript object.

现在我们已经将 JSON 字符串发送到服务器,现在需要对其进行解码。为了在 php 中解码 JSON,我们使用:

$params = json_decode($_POST['params']);

变量$params现在将是一个 php 对象,其中包含imageid作为财产。这意味着您的图像 ID 现在存储在$params->imageid变量例如echo $params->imageid将输出您的图像 ID。

正如 @baboizk 正确提到的,你应该使用isset()在 PHP 中确保它在使用之前确实存在。例如。

$params = json_decode($_POST['params']);

// Check that imageid exists.
if(isset($params->imageid) == true) {
    // Do code that needs $params->imageid;
} else {
    // Fail gracefully.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从php文件中的FormData获取数据 的相关文章

随机推荐