首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsonp -> json_decode()

jsonp -> json_decode()
EN

Stack Overflow用户
提问于 2010-01-20 12:33:31
回答 3查看 6.9K关注 0票数 2

由于某些原因,我无法从返回的jsonp字符串中获取信息,

代码语言:javascript
复制
<?php
// Created by Talisman 01/2010 ★✩ 

$vorto = $_GET['vorto']; // Get the Word from Outer Space and Search for it!

if (isset($vorto))
 {
 echo $vorto;
 } else {
  $Help = "No Vorto -> 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 . ' </br> '; // DEBUG CODE 

$AVcontent = file_get_contents($AVfinalurl) ;
echo $AVcontent . ' </br> ';   // DEBUG CODE 

//★✩为什么下一行不能工作?

代码语言:javascript
复制
 $AVDecode = json_decode($AVcontent);


// /* 
  if(isset( $AVcontent)) {          // DEBUG CODE
  echo "json_decode set AVcontent" . ' </br> ';
  } else {
  echo "something fishy here" . ' </br> ';
  }

 if (empty($AVcontent)){
  echo "EMPTY EMPTY" . ' </br> ';
  } else {
  echo "Not Empty". ' </br> ';
  }

echo $AVDecode . ' </br> ';
// */

// Why can't I echo or access information with $AVDecode? Is it something with
// jsonp?

?>

这是我的结果

komputilojhttp://vortaro.us.to/ajax/epo/eng/komputiloj/?callback=

({“文本”:“komputilo: computer"})

json_decode设置AVcontent不为空

我应该看到回声$AVDecode

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-20 12:37:15

调试建议:

检查的输出。它应该会给你一个不起作用的确切原因。不过,只能从PHP5.3.0获得。

的原因:

与不完全相同。它包含破坏json_decode()的额外数据。

解决方案:

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

票数 6
EN

Stack Overflow用户

发布于 2010-01-20 12:40:20

您不能回显对象或数组。请告诉我们这一行打印出了什么:

代码语言:javascript
复制
print_r(json_decode($AVcontent));

把它放在$AVDecode = json_decode($AVcontent);后面

票数 0
EN

Stack Overflow用户

发布于 2010-01-20 12:56:33

您的示例URL返回

代码语言:javascript
复制
?({"text":"<b>peti</b>: ask, ask for, beg, bid, request"})

JSONP不是有效的JSON,它会将其包装到您提供的回调中,如

代码语言:javascript
复制
callbackname(JSONIsInHere)

因此,您需要从$AVcontent的第一次出现(到最后一次)对JSON进行子串,以便获得回调参数,该参数是有效的JSON,可以用json_decode进行编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2101316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档