我试图从一台服务器获取URL,并使用该URL获取另一台服务器的内容。
$.ajax({url : 'http://localhost:8080/geturl.jsp?A=1&B=2,C=3',
success : function (data)
{
alert(data);
$.getJSON(data, function (mydata)
{
alert(mydata);
});
},
error : function (data, status, xhr)
{
}
});
我知道我们不能通过ajax调用进行跨域请求,这就是我使用getJSON的原因,我在中遇到了以下问题
- 当我简单地将数据传递到getJSON的url部分时(如代码所示),警报框会显示正确的url,但没有执行get请求(get请求是从FireBug监控的)
- 当硬编码数据时"http://www.google.com"然后执行get请求,但没有响应,尽管响应标头来了,响应代码是200(但它在Firebug中被标记为RED)(不知道为什么:()
- 当我尝试在localhost域中获取网页主机时,尽管响应不是JSON,但它被正确地获取了
我有以下疑虑
- 如果getJSON函数只访问JSON对象作为响应,那么为什么在执行上述3时没有出现错误
- 执行所需功能的正确代码是什么
- 对每种情况的建议
提前感谢您的回答:)
getJSON
函数只能跨域使用以获取JSONP
它不会神奇地规避任何安全限制。
http://api.jquery.com/jQuery.ajax/
这应该是jsonp:的一个工作示例
var request = jQuery.ajax(
{
url: "http://Your url",
success: function (data) { console.log('success!'); console.log(data); },
error: function (data) { console.log('error!'); console.log(data); },
dataType: "jsonp",
type: "GET",
data: { key: 'value' }
});