【问题标题】:Send array of objects as POST data without ajax发送对象数组作为没有 ajax 的 POST 数据
【发布时间】:2016-07-25 02:14:09
【问题描述】:

我有一个 HTML 表单。提交表单时,会执行一个 jQuery 代码来附加一个对象数组,然后再将数据发送到服务器。每个对象都包含在表单之外检索到的信息。

<form method="post" id="formID" action="test.php" accept-charset="utf-8">
    <!-- form inputs -->
</form>
$('#formID').submit(function() {
    var form = $(this);     
    $('.file').each(function(index) {
        var filedata = {
            name: $(this).find('.name').text(), 
            ordernum: index, 
            size: $(this).find('.size').text()
        };
        form.append('<input type="hidden" name="filedata[]" value="' + filedata + '"/>');
    });
});

我的目标是在服务器端检索这些信息。不幸的是,当我输出$_POST 数据时,我只能得到一个通用的Object 数据。

echo '<pre>';
print_r($_POST['filedata']);
echo '</pre>';

/* output */
Array
(
    [0] => [object Object]
    [1] => [object Object]
)

有没有办法在不使用 AJAX 请求的情况下向服务器提交表单时发送对象数组?

【问题讨论】:

    标签: php jquery arrays forms input


    【解决方案1】:

    您需要将连接到 HTML 的对象字符串化:

    form.append('<input type="hidden" name="filedata[]" value="' + JSON.stringify(filedata) + '"/>');
    

    然后您需要在 PHP 中反序列化该值:

    foreach($_POST['filedata'] as $d => $data)
    {
        $obj = json_decode($data);
        echo '<pre>';
        print_r($obj['name']);
        print_r($obj['ordernum']);
        print_r($obj['size']);
        echo '</pre>';
    }
    

    【讨论】:

    • 感谢您的回答。不幸的是,我在服务器端收到以下错误:Warning: json_decode() expects parameter 1 to be string, array given in D:\xampp\htdocs\upload\controller\testController.php on line 22.
    • 您需要遍历$_POST['filedata'] 数组中的每个值。我为你更新了答案
    • 不幸的是,仍然无法正常工作(我得到一个空白输出)。 $_POST['filedata'] 可能有问题?当我输出它时,我得到Array ( [0] =&gt; { [1] =&gt; { )
    • 这将是一个问题,是的。如果您在 JS console.log(JSON.stringify(filedata)) 中执行以下操作,您会在控制台中看到什么?
    • 找出答案。转换成字符串数据的逗号与 append 命令中的逗号冲突。我已将其更改为form.append("&lt;input type='hidden' name='filedata[]' value='" + JSON.stringify(filedata) + "'/&gt;");。然后为了正确访问成员也在 PHP 上进行了更改:$obj = (array) json_decode($data);。也许考虑更新答案以解决这些问题。感谢您的帮助。
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2011-02-21
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多