[英]Passing a PHP Object as argument of a javascript function
我的搜索技巧似乎使我失败了。 我有一个从mysql条目反序列化的php对象,我想将其作为参数传递给javascript函数,因此它可以将对象与表单中的值进行比较。 根据我从搜索中收集到的信息,将对象编码为json对象可以解决问题,但是当我在变量上执行json_encode时,只会导致{}
。
以下是相关的代码段:
<?php
$data = new Data();
$data = unserialize(base64_decode($rawdata));//Where $rawdata is the data retrieved from the mysql query.
/* using function such as $data->getName() to retrieve the relevant data */
?>
<form id="myform" action="#" method="post" onsubmit="compareEntry(<?=json_encode($data)?>)">
<!-- Different input and select field initialized with the php data -->
<input type="submit" onclick="compareEntry(<?=json_encode($data)?>)"/>
</form>
<!--<?=json_encode($data)?>-->
我知道从数据库中正确检索了php数据,因为表单中的值都已正确初始化。 只有最后一个html注释,我才知道我有一个空的json对象。
这是print_r($data)
返回(已编辑敏感信息)的示例:
(
[m_path:private] =>
[m_version:private] => REL_54
[m_bugs:private] => Array
*RECURSION*
[m_targets:private] => Array
*RECURSION*
[m_symptoms:private] => Array
*RECURSION*
[m_exception:private] => Array
*RECURSION*
[m_instruction:private] => Array
*RECURSION*
[m_sources:private] => Array
*RECURSION*
[m_risks:private] => Array
*RECURSION*
[m_test:private] => Array
*RECURSION*
[m_contact:private] => Array
*RECURSION*
)
1
我做错什么了吗? 在我的场景中,将JSON编码正确吗?
JSON是正确的方法。 在这种情况下,基本上json_encode / json_decode可以很好地工作。 如果它返回一个空对象,则可能是您尝试编码的数据有问题。 该函数希望数据使用UTF-8,而PHP本身仍为ISO-8859-1。 因此,如果您在某些字段中有特殊字符,则最好先使用utf8_encode转换这些字符。
您的对象仅包含json_encode
不会输出的私有属性。
同样,似乎正在进行某种递归,这可能意味着每个数组的成员都在引用对象本身(或类似的东西)。
您将需要公开某些属性,并可能还解决递归问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.