当前位置:  开发笔记 > 编程语言 > 正文

jsonp - > json_decode()

如何解决《jsonp->json_decode()》经验,为你挑选了1个好方法。

由于某种原因,我无法从返回的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



1> Pekka suppor..:

调试建议:

检查json_last_error()的输出.它应该给你一个确切的原因,它为什么它不起作用.但是,仅适用于PHP 5.3.0.

原因:

JSONP JSON不同.它包含破坏json_decode()的额外数据.

解:

使用删除额外的括号 substr($AVDecode, 1, strlen($AVDecode)-2)


+1.JSONP是一个带有函数包装器的JSON.您可以使用substr函数删除函数包装器,然后评估剩余的JSON语句.
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有