Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t从json-p调用访问数据_Javascript_Jquery_Cross Domain_Jsonp_Getjson - Fatal编程技术网

Javascript Can';t从json-p调用访问数据

Javascript Can';t从json-p调用访问数据,javascript,jquery,cross-domain,jsonp,getjson,Javascript,Jquery,Cross Domain,Jsonp,Getjson,我正在尝试从另一个域中的服务器访问一些数据 因此,我有以下php代码: header('Content-type: application/json'); $callback = $_GET[callback]; echo $callback . '(' . $CIPHERDATA . ')'; 在客户端运行的javascript如下 $.getJSON("http://mydomain.gr/zerobin-015/?24c3285?callback=?",function(jsondata

我正在尝试从另一个域中的服务器访问一些数据

因此,我有以下php代码:

header('Content-type: application/json');
$callback = $_GET[callback];
echo $callback . '(' . $CIPHERDATA . ')';
在客户端运行的javascript如下

$.getJSON("http://mydomain.gr/zerobin-015/?24c3285?callback=?",function(jsondata){
    alert(jsondata.data);
    alert("hi");
});
警报没有显示。 唯一发生的事情是创建一个脚本标记,该标记包含我需要的所有信息,但我无法访问

<script src="http://mydomain.gr/zerobin-015/?24c3285?callback=jsonp1335048265855&_=1335048265874">
({"data":"{\"iv\":\"smDkNQMt0MIbPABPbAb+xQ\",\"salt\":\"aoFfKV+jHhs\",\"ct\":\"Ns17UQZQN\/ktO2hUW+dPug\"}","meta":{"expire_date":1337635538,"postdate":1335043538}})
</script>

({“数据”:“{“iv\”:“SMDKNQMT0MIBPABAB+xQ\”,“salt\”:“aoFfKV+jHhs\”,“ct\”:“Ns17UQZQN\/ktO2hUW+dPug\”,“meta:{“到期日期”:13376353538,“后发日期”:1335043538})
我的json-p格式有问题吗?
此数据的正确格式是什么,以便它们可以访问?

可能是服务器获取了错误的请求头,因此没有将JSON响应作为success语句的一部分返回。我打赌,如果您在AJAX调用中添加错误捕获,您将在那里看到JSONP响应。解决此问题的正确方法是确保向服务器发送正确的mimetype头,以便在正确的上下文中调用返回的JSONP回调。

可能是服务器获取了错误的请求头,因此没有将JSON响应作为success语句的一部分返回。我打赌,如果您在AJAX调用中添加错误捕获,您将在那里看到JSONP响应。解决此问题的正确方法是确保向服务器发送正确的mimetype头,以便在正确的上下文中调用返回的JSONP回调。

您做得对。 这只是PHP中的一个运行时错误。
在PHP脚本中,将
$GET[callback]
替换为
$GET['callback']
。请注意单引号

编辑

查看您的URL,我认为您还需要替换以下内容:

http://mydomain.gr/zerobin-015/?24c3285?callback=?
为此:

http://mydomain.gr/zerobin-015/?24c3285&callback=?
注:第二个?被替换为&。根据,HTTP URL的格式最多需要一个?在任何URL中。这种情况可能有点混乱,因为拖尾。在运行时,
$.getJSON()
调用中,该函数将被jQuery替换。决赛?不会出现在最终URL中。所以最后你应该只有一个


编辑2

我刚刚在您的jsonp端点上尝试了HTTP访问。以下是我使用的URL:

http://kasem.gr/vasilis-dev/zerobin-015/?xxxxxBigStringHerexxxx=&callback=foo
xxxxBigStringHerexxx
被替换为40个随机字符和数字的字符串。我得到的结果是:

jsonCallback({"data":"{\"iv\":\"smDkNQMt0MIbPABPbAb+xQ\",
                       \"salt\":\"aoFfKV+jHhs\",\"ct\":\"Ns17UQZQN\/ktO2hUW+dPug\"}",
              "meta":{"expire_date":1337635538,"postdate":1335043538}})
这告诉我你的PHP是不正确的。当我传递“foo”时,它使用
jsonCallback
作为回调函数名。此外,出于某种原因,“数据”是一个序列化的json字符串。这似乎是不必要的一步。但功能失配是最重要的

如果这还不清楚,我建议你。

你做得对。 这只是PHP中的一个运行时错误。
在PHP脚本中,将
$GET[callback]
替换为
$GET['callback']
。请注意单引号

编辑

查看您的URL,我认为您还需要替换以下内容:

http://mydomain.gr/zerobin-015/?24c3285?callback=?
为此:

http://mydomain.gr/zerobin-015/?24c3285&callback=?
注:第二个?被替换为&。根据,HTTP URL的格式最多需要一个?在任何URL中。这种情况可能有点混乱,因为拖尾。在运行时,
$.getJSON()
调用中,该函数将被jQuery替换。决赛?不会出现在最终URL中。所以最后你应该只有一个


编辑2

我刚刚在您的jsonp端点上尝试了HTTP访问。以下是我使用的URL:

http://kasem.gr/vasilis-dev/zerobin-015/?xxxxxBigStringHerexxxx=&callback=foo
xxxxBigStringHerexxx
被替换为40个随机字符和数字的字符串。我得到的结果是:

jsonCallback({"data":"{\"iv\":\"smDkNQMt0MIbPABPbAb+xQ\",
                       \"salt\":\"aoFfKV+jHhs\",\"ct\":\"Ns17UQZQN\/ktO2hUW+dPug\"}",
              "meta":{"expire_date":1337635538,"postdate":1335043538}})
这告诉我你的PHP是不正确的。当我传递“foo”时,它使用
jsonCallback
作为回调函数名。此外,出于某种原因,“数据”是一个序列化的json字符串。这似乎是不必要的一步。但功能失配是最重要的


如果不清楚,我建议您。

问题在于数据格式。php应该提供的json字符串是: {“数据”:“{“iv”:“SMDKNQMT0MIBPABAB+xQ”,“salt”:“aoFfKV+jHhs”,“ct”:“Ns17UQZQNktO2hUW+dPug”},“meta”:{“到期日”:133763538,“后发日期”:133504338}


php代码中的错误是,我在同一个字符串上使用了两次json_编码。

问题在于数据格式。php应该提供的json字符串是: {“数据”:“{“iv”:“SMDKNQMT0MIBPABAB+xQ”,“salt”:“aoFfKV+jHhs”,“ct”:“Ns17UQZQNktO2hUW+dPug”},“meta”:{“到期日”:133763538,“后发日期”:133504338}


php代码中的错误是,我在同一个字符串上使用json_编码了两次。

这使得脚本在chrome上创建了一个包含json的脚本标记。但是警报命令仍然不起作用。我无法使用jsondata.data或jsondata.meta访问json中的数据。我所做的是将php头更改为“header”('content-type:application/json;charset=utf-8');“在php上。我想这就是你的意思。这使得脚本在chrome上创建一个包含json的脚本标记。但是警报命令仍然不起作用。我无法使用jsondata.data或jsondata.meta访问json中的数据。我所做的是将php头更改为”头('content-type:application/json;charset=utf-8')在php上。我想这就是你的意思。我做了你说的两个更改,但成功函数仍然不起作用,我无法使用jsondata.data或jsondata.meta访问json中的数据。我对我的真实代码进行了修改。你需要firebug在iframe的头部中查看创建的标记。出于一个奇怪的原因,该脚本只能与jquery 1.3.2.re:出于一个奇怪的原因……它只适用于jquery的反向运行是什么原因?你知道原因吗,还是你的意思是“出于某种未知的原因”?1.“jsonCallback”之所以存在,是因为在你尝试它的时候我正在试验我的php代码。现在试试,你会发现没有“jsonCallback”我不知道我为什么