您好,我正在尝试按照以下说明使用 jQuery 进行 ajax 调用:http: //data.hud.gov/housing_counseling.html
但由于这是一个跨域请求,我需要做 jsonp (不了解它)
经过研究,我以两种方式完成了调用,但我不断收到错误消息,数据位于浏览器中的某个位置,但我不知道如何访问它。
注意 url 上的回调参数(如果我不包含它,我会得到 Access-Control-Allow-Origin 不允许的 Origin。)
第一次调用:
function loadJson()
{
var statesurl = "http://data.hud.gov/Housing_Counselor/search?AgencyName=&City=&State=CA&jsoncallback=?"
$.getJSON(statesurl, null, function(result){
}).done(function(result) {
var items = [];
$.each( result, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
console.log(key + ": " + val)
});
$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "div#thestates" );
}).fail(function() {
console.log( "error" );
})
}
$( "#loadstates" ).click(function() { loadJson()});
我得到回调参数的随机回调名称,例如http://data.hud.gov/Housing_Counselor/search?AgencyName=&City=&State=CA&jsoncallback=jQuery19107074434771202505_1384407999935&_=1384407999936 通过 Chrome 的控制台我可以看到响应是 JSON 数据键值对。
如果我尝试使用 $.ajax 进行调用,$.ajax 调用也会发生同样的情况:
function loadJsonP()
{
var statesurl = "http://data.hud.gov/Housing_Counselor/search?AgencyName=&City=&State=CA&jsoncallback=?"
$.ajax({
url:statesurl,
dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
success:function(json){
// do stuff with json (in this case an array)
console.log(json_encode(json))
},
error:function(){
console.log("Error");
},
});
}
我得到了与上图类似的响应。虽然 console.log 的输出都是“错误”,但我看到了 200 响应
我应该如何处理响应以获得成功的响应并操作 JSON 数据,这显然是在浏览器的某个地方
谢谢