【发布时间】:2015-01-14 08:56:55
【问题描述】:
这里是“问题”,我用这样的数据填充 PHP 对象:
public function hydrate(array $data){
foreach($data as $key=>$value){
$method = 'set'.ucfirst($key);
if(METHOD_EXISTS($this,$method)){
$this->$method($value);
}
}
}
现在,我想将其转换为 javascript 对象而不是 PHP,因此,我通过 .ajax 调用从我的数据库中获取“数据数组”,并得到一个“看起来”像这样的 JSON 对象:
{"id":"44","name":"test","testKey":"qklfjmdjfq88"}
我的 Javascript“对象”如下所示:
function myObject(){
var element,id,name,testKey;
this.hydrate = function(ajaxData){
//THIS CODE DOES NOT WORK
//THAT IS THE PROBLEM
Object.keys(ajaxData).forEach(function(key){
console.log("function loop key : "+key);//OK
console.log("function loop value : "+ajaxData[key]);//OK
this.key = Element[key];
});
};
}
所以,一旦我在我的 js 脚本中收到我的 JSON“数组”,我想把它变成一个 js 对象实例,所以我正在这样做:
var myCurrentObject = new myObject();
myCurrentObject.hydrate(/*WHAT MY AJAX CALL RETURN*/);
console.log(myCurrentObject.name);
//console shows undefined...
所以问题似乎出在 .hydrate 函数中... this.key 与 myObject 实例 var 不对应... (name / id / testKey) 如何用看起来像这样的函数填充 js 对象实例我在使用 php 时使用的那个?
感谢您的帮助/阅读
【问题讨论】:
-
您可能会发现您的“ajaxdata”已经是一个对象,尝试将其记录到控制台进行检查。如果您随后发现它实际上是一个字符串,请尝试使用 JSON.parse 将其转换为一个对象。见这里:developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
标签: javascript php arrays json object