我有一个PHP对象数组,它有一个函数getValue,它获取对象的值。 所以,如果我想在PHP中获得它的价值我只是:
echo mapArray[2][2]->getValue;
我使用:
将数组传递给JSvar mapArray = <?php echo json_encode($mapArray); ?>
如果我做了
document.write(mapArray);
我得到了一整套“对象对象”字符串。如果我尝试:
document.write(mapArray.[2][2].getValue);
我得到“未定义”。
为什么会这样?我是否必须模仿PHP数据对象,以便在JS或JSON编码中识别方法可以帮助我解决这个问题?
答案 0 :(得分:4)
所有json_encode
都返回一个表示数据的字符串。
想象一下,能够创建所有PHP函数的JavaScript版本需要什么。 json_encode
基本上必须是一个编译器,能够理解所有可能的PHP功能并将其转换为等效的JavaScript功能。
可以想象这样的事情适用于简单的功能,但它如何能够用于更精细的代码呢?如果您的getValue
函数调用一些库PHP代码来建立MySQL连接,检索数据,并使用JavaScript中不存在的内置PHP函数执行计算,则json_encode
函数会很差必须将整个PHP语言转换为JavaScript。
不,你可以获得的所有数据都是数据。不是功能。
对于您所描述的具有访问者方法的私有数据的特定情况,只需创建一个数组(或对象),在调用json_encode
之前描述您希望返回到浏览器的实际数据。
答案 1 :(得分:0)
当您将数组序列化为JSON并将其传递给客户端以便使用JavaScript进行评估时,您只能传递数组的表示及其内容(即属性值)。