Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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
通过JSON在JS中使用PHP方法?_Php_Javascript_Json - Fatal编程技术网

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

通过JSON在JS中使用PHP方法?,php,javascript,json,Php,Javascript,Json,我有一个PHP对象数组,它有一个函数getValue,它获取对象的值。 因此,如果我想在PHP中获得它的值,我只需: echo mapArray[2][2]->getValue; 我使用以下命令将数组传递给JS: var mapArray = <?php echo json_encode($mapArray); ?> 我得到了一个完整的“object”字符串数组。如果我尝试: document.write(mapArray.[2][2].getValue); 我得到“未定

我有一个PHP对象数组,它有一个函数getValue,它获取对象的值。 因此,如果我想在PHP中获得它的值,我只需:

echo mapArray[2][2]->getValue;
我使用以下命令将数组传递给JS:

var mapArray = <?php echo json_encode($mapArray); ?>
我得到了一个完整的“object”字符串数组。如果我尝试:

document.write(mapArray.[2][2].getValue);
我得到“未定义”


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

当您将数组序列化为JSON并将其传递给客户端进行JavaScript评估时,您只能传递数组及其内容的表示形式(即属性值)

想象一下,要创建所有PHP函数的JavaScript版本需要什么
json_encode
本质上必须是一个编译器,能够理解所有可能的PHP功能并将其转换为等效的JavaScript功能

可以想象这样一种东西适用于简单的函数,但它如何适用于更复杂的代码呢?如果
getValue
函数调用一些库PHP代码来建立MySQL连接,检索数据,并使用JavaScript中不存在的内置PHP函数执行计算,那么糟糕的
json\u encode
函数必须将整个PHP语言转换为JavaScript

不,JSON中只能得到数据。不是功能


对于您描述的特定情况,如果您有一些带有访问器方法的私有数据,只需创建一个数组(或对象),该数组描述您希望返回到浏览器的实际数据,然后调用
json\u encode

所有
json\u encode
都返回表示您的数据的字符串

想象一下,要创建所有PHP函数的JavaScript版本需要什么
json_encode
本质上必须是一个编译器,能够理解所有可能的PHP功能并将其转换为等效的JavaScript功能

可以想象这样一种东西适用于简单的函数,但它如何适用于更复杂的代码呢?如果
getValue
函数调用一些库PHP代码来建立MySQL连接,检索数据,并使用JavaScript中不存在的内置PHP函数执行计算,那么糟糕的
json\u encode
函数必须将整个PHP语言转换为JavaScript

不,JSON中只能得到数据。不是功能


对于您描述的特定情况,如果您有一些带有访问器方法的私有数据,只需创建一个数组(或对象),该数组描述您希望返回到浏览器的实际数据,然后再调用
json\u encode

第二个代码块的渲染结果是什么?在第一段代码中,我假设您的意思是
mapArray[2][2]>getValue()
。如果
getValue
是一个简单的属性,而不是一个方法,那么问题的其余部分就没有意义了。第二个代码块的渲染结果是什么?在第一段代码中,我假设您的意思是
mapArray[2][2]>getValue()
。如果
getValue
是一个简单的属性,而不是一个方法,那么问题的其余部分就没有意义了。谢谢你的解释。谢谢你的解释。
document.write(mapArray.[2][2].getValue);