由于某种原因,我无法从返回的jsonp字符串中获取信息,
add ?vorto=TheWordYouWant to the end of this website"; echo $Help; } // Now Lets Search Alex's Vortaro, It uses jsonp // ex. http://vortaro.us.to/ajax/epo/eng/petas/?callback=? // Future Feature inproved language functinality $AVurl1 = "http://vortaro.us.to/ajax/epo/eng/"; $AVurl2 = "/?callback="; $AVfinalurl= $AVurl1 . $vorto . $AVurl2; echo $AVfinalurl . ' '; // DEBUG CODE $AVcontent = file_get_contents($AVfinalurl) ; echo $AVcontent . ' '; // DEBUG CODE
//★✩为什么下一行不起作用?
$AVDecode = json_decode($AVcontent); // /* if(isset( $AVcontent)) { // DEBUG CODE echo "json_decode set AVcontent" . ' '; } else { echo "something fishy here" . ' '; } if (empty($AVcontent)){ echo "EMPTY EMPTY" . ' '; } else { echo "Not Empty". ' '; } echo $AVDecode . ' '; // */ // Why can't I echo or access information with $AVDecode? Is it something with // jsonp? ?>
这是我的结果
komputilojhttp://vortaro.us.to/ajax/epo/eng/komputiloj/回调=
({"text":"komputilo:computer"})
json_decode设置AVcontent
不是空的
我应该看到echo $ AVDecode
调试建议:
检查json_last_error()的输出.它应该给你一个确切的原因,它为什么它不起作用.但是,仅适用于PHP 5.3.0.
原因:
JSONP与 JSON不同.它包含破坏json_decode()的额外数据.
解:
使用删除额外的括号 substr($AVDecode, 1, strlen($AVDecode)-2)