由于某些原因,我无法从返回的jsonp字符串中获取信息,
<?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 //★✩为什么下一行不能工作?
$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
发布于 2010-01-20 12:37:15
调试建议:
检查的输出。它应该会给你一个不起作用的确切原因。不过,只能从PHP5.3.0获得。
的原因:
与不完全相同。它包含破坏json_decode()的额外数据。
解决方案:
使用substr($AVDecode, 1, strlen($AVDecode)-2)删除额外的括号
发布于 2010-01-20 12:40:20
您不能回显对象或数组。请告诉我们这一行打印出了什么:
print_r(json_decode($AVcontent));把它放在$AVDecode = json_decode($AVcontent);后面
发布于 2010-01-20 12:56:33
您的示例URL返回
?({"text":"<b>peti</b>: ask, ask for, beg, bid, request"})JSONP不是有效的JSON,它会将其包装到您提供的回调中,如
callbackname(JSONIsInHere)因此,您需要从$AVcontent的第一次出现(到最后一次)对JSON进行子串,以便获得回调参数,该参数是有效的JSON,可以用json_decode进行编码。
https://stackoverflow.com/questions/2101316
复制相似问题