我想知道通过AJAX传递php对象的最佳方法是什么。
例如
//objectClass = objectClass.php
$obj = new objectClass();
<a href="javascript:getOutput("some variable", $obj);
由于另一个文件,即output.php(通过getOutput()函数中的ajax调用)也需要访问objectClass.php,访问$ obj的最佳方法是什么?
我尝试了jscon_encode($ obj)然后解码但没有工作。
提前致谢
答案 0 :(得分:2)
老实说,在@mario建议的会话变量中存储需要传递的信息(在这种情况下是一个对象)是最容易的。如果你需要它是一个动态命名的会话变量,你可以通过AJAX传递会话变量的名称(字符串)。
答案 1 :(得分:1)
json_encode是最好的方式。
您需要对href参数使用'而不是',并将jSON_HEX_APOS选项添加到json_encode以转义任何'在JSON中。
像这样使用:
<?php
//objectClass = objectClass.php
$obj = new objectClass();
?>
<a href='javascript:getOutput(<?php echo $some_variable ?>,<?php echo json_encode ($obj, JSON_HEX_APOS) ?>);'></a>
或
<?php
//objectClass = objectClass.php
$obj = new objectClass();
echo "<a href='javascript:getOutput($some_variable, " . json_encode ($obj, JSON_HEX_APOS) . " );'></a>"
?>
编辑: 如果你有jQuery,我建议使用jQuery.parse()来加载JSON。如果没有,你可以使用JSON.parse(),但我不知道它是否与古老的浏览器兼容。无论如何,没有它们你应该没问题(只需在服务器端检查XSS)。