【发布时间】:2015-10-18 08:54:59
【问题描述】:
我知道如果我在 google 上搜索这个,你会得到很多回击,而我在过去 2 天里一直试图弄清楚发生了什么,但没有成功。
所以,我正在使用 Wordpress,但不确定这与我的问题是否相关,并且我在存储中有一个有效的 JSON 字符串,我需要将它放入 PHP 中,然后放入一个对象中。
JSON 字符串是我转换的 PHP 中的一个对象,因为我在 sessionStorage 中需要它,所以这是我在 PHP 中转换它的方式:
$encodedTime = json_encode($time);
$encodedTime = str_replace("'", "", $encodedTime);
然后将其加载到一个元素中:
<a class="button" href="/?page_id=714" name="viewButton" rel='<?php echo $encodedTime ?>'>View</a>
这是现在存储在浏览器 sessionStorage 中的对象:
{"uuid":"108-417f-b5e6-970baec37","low":2929,"run":50793,"contact":"a07-e4b0-4977-ad10-af7aecf4ef80","completed":true,"values":[{"category":{"base":"Great","eng":"Great"},"node":"f85ed85-495e-8eaf-1e6cfdbadf97","time":"2015-10-12T11:28:13.371Z","text":"Great thanks","rule_value":"Great","value":"Great","label":"Response 1"}],"steps":[{"node":"83e332e0-a456-449f-a4f6-cee688f9395b","arrived_on":"2015-10-12T11:27:43.866Z","left_on":"2015-10-12T11:27:44.052Z","text":"Hello! Good Morning This morning?","type":"A","value":"None"},{"node":"f85ed8a8-e745-495e-8eaf-1e6cfdbadf97","arrived_on":"2015-10-12T11:27:44.052Z","left_on":"2015-10-12T11:28:13.371Z","text":"Great thanks","type":"R","value":"Great"},{"node":"424912da-e680-432d-877c-307117366f98","arrived_on":"2015-10-12T11:28:13.374Z","left_on":"2015-10-12T11:28:13.477Z","text":"Thats great to hear!, Wishing you a good day","type":"A","value":"None"}],"created_on":"2015-10-12T11:27:43.721Z","modified_on":"2015-10-12T11:28:13.482Z","expires_on":null,"expired_on":null,"runtime":"12 - 10 @ 11 hour"}
这已通过 JSONLint 验证。
这是 PHP 代码:
$time = "<script>document.write(time)</script>";
如果我现在print_r($time) 我得到相同的打印,一个有效的 JSON 字符串。太好了!
根据我阅读的内容,PHP 有 json_decode 来满足这样的要求,但它不起作用,但它确实给了我一个空白
$time = json_decode("<script>document.write(time)</script>", true); // PHP Code
print_r($time);
如果我尝试json_encode,它会给我带来有趣的角色。
如果我尝试使用 :
使其成为对象$time = (object) json_decode("<script>document.write(time)</script>", true);
它给了我:
stdClass 对象 ( )
$time = (object) "document.write(time)";
stdClass 对象 ( [scalar] => {"uuid":"1788-417f-b5e6-970bab44ec37","low":2629,"run":5046793,"contact":"a0eb0-4977-ad10-af7aecf4ef80 ","已完成":true,"values":[{"category":{"base":"Great","eng":"Great"},"node":"f85ed85-495e-8eaf-1e6cfdbadf97", "time":"2015-10-12T11:28:13.371Z","text":"非常感谢","rule_value":"Great","value":"Great","label":"Response 1" }],"steps":[{"node":"83e332e0-a45-a4f6-cee688f9395b","arrived_on":"2015-10-12T11:27:43.866Z","left_on":"2015-10-12T11 :27:44.052Z","text":"你好!早上好?","type":"A","value":"None"},{"node":"f85ed8a8-5e-8eaf-1e6cfdbadf97", "arrived_on":"2015-10-12T11:27:44.052Z","left_on":"2015-10-12T11:28:13.371Z","text":"非常感谢","type":"R" ,"值":"大"},{"节点":"424912da-e680-432d-877c-307117366f98","arrived_on":"2015-10-12T11:28:13.374Z","left_on":"2015 -10-12T11:28:13.477Z","text":"很高兴听到这个消息!祝你有美好的一天","type":"A","value":"None"}],"created_on" :"2015-10-12T11:27:43.721Z","modified_on":"2015-10-12T11:28:13.482Z","exp ires_on":null,"expired_on":null,"runtime":"12 - 10 @ 11 小时"})
所以我很茫然,至于为什么它不起作用。我可以选择使用 Javascript 并使用这些信息,但我确实需要在 PHP 中使用它,因为还有更多工作要做。
谁能帮我指出哪里出错了,为什么出错了?
【问题讨论】:
-
php 在 javascript 之前执行,因此 php 代码看不到来自 javascript
document.write的输出 -
@RamRaider 我该如何把握好时机?
-
通过 ajax 将 JSON 对象发送到 php 脚本
-
所以可以使用 HTML 链接到一个页面,同时 Javascript 中的 Ajax 也可以链接到它所链接的同一页面?
-
除此之外:到底为什么那行代码:
$encodedTime = str_replace("'", "", $encodedTime);?您修改了您的 json 字符串,使其不再是有效的 json!
标签: javascript php json object