【发布时间】:2014-08-19 18:37:12
【问题描述】:
在 ajax 函数(第一个计时器)中没有得到我想要的内容,这似乎是因为 url 在发送时发生了变化,我不确定为什么或功能的哪一部分: ajax 函数在我的域上使用 proxy.php 来避免 Cross-Origin Request Blocked 错误。仅供参考,这是在 wordpress 网站中。我的proxy.php的内容是:
<?php
header('Content-type: application/json');
$url=$_GET['url'];
$json=file_get_contents($url);
echo $json;
echo $url; ?>
最后的echo $url; 用于测试 - 看看 url 地址发生了什么。
代理功能和目标url地址:
<button id="srch">Search</button>
<script>
$("#srch").click(function(){
var url= 'https://commons.wikimedia.org/w/api.php?action=query&generator=search&gsrnamespace=6&gsrsearch=%22stones%22&gsrlimit=20&gsroffset=20&prop=imageinfo&iiprop=url&format=json&callback=?';
var urlbackend = '../proxy.php?url='+url;
$.ajax({
url: urlbackend,
data: { url: url },
dataType: 'jsonp',
success: function () {
alert ("success");
console.log(data);
}
});
});
</script>
注意目标:https://commons.wikimedia.org/w/api.php?action=query&generator=search&gsrnamespace=6&gsrsearch=%22stones%22&gsrlimit=20&gsroffset=20&prop=imageinfo&iiprop=url&format=json&callback=?在浏览器中工作并生成我想要的 json 但是,ajax 失败(警报和 console.log 不触发)。
它得到的响应是 wikimedia 针对失败的 api 请求的默认 html 消息,其中包含我在关闭 </script> 标记后放入 proxy.php 中的 echo $url。网址回显:
https://commons.wikimedia.org/w/api.php?action=query&generator=search&gsrnamespace=6&gsrsearch=%22stones%22&gsrlimit=20&gsroffset=20&prop=imageinfo&iiprop=url&format=json&callback=?
这也与我原来的目标网址不同且不正确。
是什么导致了这些变化,我该如何解决?
为什么我在GET 网址中得到这个&&callback=jQuery11110023817249378105143_140847289626?
【问题讨论】:
-
在这里找到了问题的答案:stackoverflow.com/questions/20503244/…
标签: jquery ajax json wordpress jsonp