通过JSON在JS中使用PHP方法?

时间:2010-12-04 19:33:45

标签: php javascript json

我有一个PHP对象数组,它有一个函数getValue,它获取对象的值。 所以,如果我想在PHP中获得它的价值我只是:

echo mapArray[2][2]->getValue;

我使用:

将数组传递给JS
var mapArray = <?php echo json_encode($mapArray); ?>

如果我做了

document.write(mapArray);

我得到了一整套“对象对象”字符串。如果我尝试:

document.write(mapArray.[2][2].getValue);

我得到“未定义”。

为什么会这样?我是否必须模仿PHP数据对象,以便在JS或JSON编码中识别方法可以帮助我解决这个问题?

2 个答案:

答案 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进行评估时,您只能传递数组的表示及其内容(即属性值)。