繁体   English   中英

PHP从javascript数据对象读取数组对象

[英]PHP read array object from javascript data object

我在 jquery 中创建了一个数据对象,并使用 post 方法将其传递给 php

var PD = { currentPage : 1, rowCount : 10, search : 5 };

post method --> data = PD

在 php 页面中,如果我得到超全局 $_POST 我有这个

var_dump($_POST) --> Array ( [data] => [object Object] )

在 php 中如何读取 $_POST ['data'] 值? 谢谢

编辑(完整代码)

var PD = { currentPage : 1, rowCount : 10, search : 5 };    
    PD = JSON.stringify(PD);

redirectPost('index.php', { data : PD });

var redirectPost = function(location, args) {
    var form = '';
    $.each(args, function(key, value) {
        form += '<input type="hidden" name="'+key+'" value="'+value+'">';
    });
    $('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();
};

PHP

$data = json_decode($_POST['data']);
var_dump($data); <-- NULL

看起来您正在寻找json_decode()函数。 但是,这不会创建 PHP 对象,而是会变成这样的数组: $data['currentPage'] 看看你是否有更多的运气:

$data = json_decode($_POST['data']);
var_dump($data);

看起来好像您的 JavaScript 对象已转换为字符串[object Object] ,您需要在发布之前对您的 JavaScript 对象进行JSON.stringify

var PD = { currentPage : 1, rowCount : 10, search : 5 };
// ensure our data is serialised in a format we can read later with PHP.
PD = JSON.stringify(PD);

post method --> data = PD

收到 $_POST 数据后,正如 Phil 指出的那样,您应该能够对它进行json_decode

首先,您的 javascript 将永远无法工作。 有一些 javascript 问题,比如在声明之前调用一个变量,值中的双引号会干扰 json。 字符串化

value="{"currentPage":1,"rowCount":10,"search":5}"

一点都不好看((
如果你像我在这里做的那样修复它https://jsfiddle.net/79dLek7p/

var PD = { currentPage : 1, rowCount : 10, search : 5 };    
    PD = JSON.stringify(PD);

var redirectPost = function(location, args) {
    var form = '';
    $.each(args, function(key, value) {
        form += '<input type="hidden" name="'+key+'" value=\''+value+'\'>';
    });
    $('<form action="'+location+'"  method="POST">'+form+'</form>').appendTo('body').submit();
};

redirectPost('index.php', { data : PD });

您将看到 $_POST['data'] 作为 json 编码的字符串,您可以按照之前的建议进行 json_decode。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM