因为我还没理解,我可以在firebug控制台中看到我的(第一次)ajax请求被发送到一个不完整的URL。 这将是一个wordpress网站。通过我的域上的proxy.php使用ajax来避免跨源请求阻止错误。 我的proxy.php的内容是:
<?php
header('Content-type: application/json');
$url=$_GET['url'];
$json=file_get_contents($url);
echo $json;
?>
在ajax函数发生的页面上我用这个测试:
<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=?';
url = '../proxy.php?url='+url;
$.ajax({
url: url,
dataType: 'jsonp',
success: function () {
alert ("success");
console.log(data);
}
});
});
</script>
并且不包含我指定的其余网址。
有人可以告诉我为什么我指定的网址正在改变/切断?这个Jquery在url地址中的长序列是什么?
答案 0 :(得分:1)
您正在弄乱url
参数。
它应该只包含真实url
而不是您尝试在GET
中传递的变量。
使用data
变量将url
变量传递给后端。像:
$("#srch").click(function(){
var url= 'http://en.wikipedia.org/w/api.php?action=query&list=allimages&ailimit=15&aifrom=stones&aiprop=url&format=json&callback=?';
var urlbackend = '../proxy.php';
$.ajax({
url: urlbackend,
data: { url: url },
dataType: 'jsonp',
success: function () {
alert ("success");
console.log(data);
}
});
});
您在data
参数中设置的内容将被解压缩到url
或GET
中的POST
变量,您应该在后端脚本中看到它。