Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问PHP中的嵌套Javascript对象_Javascript_Php_Object_Nested - Fatal编程技术网

访问PHP中的嵌套Javascript对象

访问PHP中的嵌套Javascript对象,javascript,php,object,nested,Javascript,Php,Object,Nested,正如标题所示,我试图从PHP中访问嵌套的javascript对象属性 我的目标是这样宣布的 var requestParams = { apiKey: appData.apiKey, action: "addJob", name : name, note: note, dropoff: dropoffAddress, noOfCars: noOfCars, carType: carTy

正如标题所示,我试图从PHP中访问嵌套的javascript对象属性

我的目标是这样宣布的

var requestParams = {
        apiKey: appData.apiKey,
        action: "addJob",
        name : name,
        note: note,
        dropoff: dropoffAddress,
        noOfCars: noOfCars,
        carType: carType,
        pickUpDate: pickUpDate,
        pickUpTime: pickUpTime,
        pickUpDateTime: {}
    };
pickUpDateTime(requestParams对象的最后一个属性)属性有一个嵌套对象,我使用for循环动态添加键值对

for(var x = 0; x < dateArray.length; x++){
        var dbMoment = moment(dateArray[x] + " " + pickUpTime,appData.displayDateFormat);
        requestParams.pickUpDateTime[x] = dbMoment.format(appData.dbDateFormat);
    }
但是,在将它发送到PHP脚本之后,我似乎无法访问pickUpDateTime对象。目前,我正试图使用下面的代码访问它。但它不会起作用。此外,当我包含这行代码时,函数不会返回任何内容,因此我可以检查$pickUpDateTime的内容

$pickUpDateTime = json_decode($this->getRequestValue("pickUpDateTime", true));
我可以访问所有其他财产。举个例子,这很好用

$noOfDates = $this->getRequestValue("noOfDates", true);
我知道这可能是一个相对容易的修复,但我似乎无法让它工作

非常感谢您的帮助

下面是我执行var\u dump($\u请求)时得到的结果

我认为“pickUpDateTime”嵌套在一个JSON字符串中,虽然我不知道getRequestValue方法的确切功能,但我不确定它是否会从这个字符串中提取pickUpDateTime或其他参数

首先需要将整个字符串传递到json_decode中,并将其分配给一个变量:

$jsonValue = json_decode($requestParams);
$pickUpDateTime = $jsonValue['pickUpDateTime'];

您需要使用
json.stringify
将该数据作为json字符串发送:

var data = [];

for(var x = 0; x < dateArray.length; x++){
        var dbMoment = moment(dateArray[x] + " " + pickUpTime,appData.displayDateFormat);
        data[x] = dbMoment.format(appData.dbDateFormat);
    }

var jsonString = JSON.stringify(data);

var requestParams = {
        apiKey: appData.apiKey,
        action: "addJob",
        name : name,
        note: note,
        dropoff: dropoffAddress,
        noOfCars: noOfCars,
        carType: carType,
        pickUpDate: pickUpDate,
        pickUpTime: pickUpTime,
        pickUpDateTime: jsonString
    };

//php
$pickUpDateTime = json_decode($this->getRequestValue("pickUpDateTime", true));
var数据=[];
对于(var x=0;xgetRequestValue(“pickUpDateTime”,true));

如果getRequestValue方法只是获取POST值,那么您没有发布JSON。您正在像发送表单一样发送到服务器

在JS中将pickUpDateTime声明为数组而不是对象

var requestParams = {
        apiKey: appData.apiKey,
        action: "addJob",
        name : name,
        note: note,
        dropoff: dropoffAddress,
        noOfCars: noOfCars,
        carType: carType,
        pickUpDate: pickUpDate,
        pickUpTime: pickUpTime,
        pickUpDateTime: []
    };

如果您的JS库足够聪明,它会将pickUpDateTime作为数组发布。如果不是的话,最好的解决方案是将JSON数据发布到PHP,并将其解码到服务器端的对象中。

var_dump($this->getRequestValue(“pickUpDateTime”,true))你得到了什么?getRequestValue方法做了什么?它可能需要在其中进行更改。它与$variable=$\u POST[“variable”]的作用相同,如果您已经解码了整个字符串,那么pickupDateTime将已经解码。无需再次解码-只需提取值并使用它们。我已取出json解码,仍然不起作用。请详细说明“不起作用”。请求对象在后端看起来像什么?它是否包含名为
pickUpDateTime
的属性?您是否收到和js错误,或者问题完全在后端?当我完成控制台日志时,实际的http请求是什么样子的(使用fiddler、firebug、chrome开发工具或类似工具进行检查),我得到了pickUpDateTime:“[\“2014-06-11 14:56:00\”,\“2014-06-13 14:56:00\”]“好的,那么从最后开始就可以了,后端的请求是什么样子的?我已经在上面发布了$u请求转储。当我在解码json之后执行var_转储时,我得到一个空值。
var data = [];

for(var x = 0; x < dateArray.length; x++){
        var dbMoment = moment(dateArray[x] + " " + pickUpTime,appData.displayDateFormat);
        data[x] = dbMoment.format(appData.dbDateFormat);
    }

var jsonString = JSON.stringify(data);

var requestParams = {
        apiKey: appData.apiKey,
        action: "addJob",
        name : name,
        note: note,
        dropoff: dropoffAddress,
        noOfCars: noOfCars,
        carType: carType,
        pickUpDate: pickUpDate,
        pickUpTime: pickUpTime,
        pickUpDateTime: jsonString
    };

//php
$pickUpDateTime = json_decode($this->getRequestValue("pickUpDateTime", true));
var requestParams = {
        apiKey: appData.apiKey,
        action: "addJob",
        name : name,
        note: note,
        dropoff: dropoffAddress,
        noOfCars: noOfCars,
        carType: carType,
        pickUpDate: pickUpDate,
        pickUpTime: pickUpTime,
        pickUpDateTime: []
    };