我有这个jquery使用ajax GET请求以jsonp格式获取数据,该请求过去常常工作多年但突然停止工作。
但是当我在我的本地计算机上运行它时,事情是相同的jquery,但它在我托管我的网站的服务器上不起作用。 此外,jquery曾经在jsfiddle上工作,但是当我运行相同的jquery时,甚至在jsfiddle上它也会给我带来相同的HTTP 400错误。但是同样的jquery曾经在jsfiddle上工作过。
以下是重现此问题的代码段:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="jquery-1.11.1.min.js"> </script>
<script>
$(document).ready(function () {
$.ajax({
url: 'http://d.yimg.com/aq/autoc?query=a®ion=US&lang=en-US',
dataType: 'jsonp',
jsonpCallback: 'YAHOO.util.ScriptNodeDataSource.callbacks'
});
});
YAHOO = {
util: {
ScriptNodeDataSource: {
callbacks: function(data) {
var sourceArray = $.map(data.ResultSet.Result, function(elem) {
$("#data").append( elem.name + ' -- ' + elem.symbol + '<br />');
});
}
}
}
};
</script>
<div id="data"> </div>
上面的jquery似乎也在进行堆栈溢出。但是在jsfiddle和我托管我网站的服务器上,同样的jquery无效。
看起来类似的事情发生在jsfiddle和我托管我的网站的服务器上,因为它在两个地方给我相同的HTTP错误(即400 Bad request)
在上面的链接中,如果我运行我的代码,我可以在开发人员控制台中看到我收到HTTP 400错误。
我已经验证了GET网址,在工作和非工作情况下我看起来很好,但没有想到我应该在哪里寻找以解决这个问题。 任何有关这方面的帮助将不胜感激。
刚刚发现,当我尝试通过https://www.browserling.com打开我的jsfiddle链接时,即使jsfiddle正在工作(它是一个可以在不同浏览器中测试你的网站的网站)
但是当我尝试直接从我的PC打开它时,同样的jsfiddle链接正在抛出HTTP 400。奇怪!!我的网络或ISP有问题:(