访问PHP中的嵌套Javascript对象
正如标题所示,我试图从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
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: []
};