我有一个简单的JQuery Stockwatcher应用程序,该应用程序发出JSONP请求,但回调函数未被调用。我有这个应用程序的JSON调用工作,但在某些时候它将是跨域,因此我必须做的是JSONP。
我做错了什么?当我运行此代码时,将调用Error函数。
function loadData(data) {
alert("Load Data");
$.each(data.stocks,function(i,item){
$("#results").append('Title:'+item.symbol+' == Price:'+item.price+'</p>');
});
}
$(document).ready(function(){
var url='http://localhost:8080/StockWatcherServer/stockwatcher/stockPrices?q=';
var query;
$('button').click(function(){
query=$("#query").val();
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
//$.ajaxSetup({ crossDomain: true, scriptCharset: "utf-8" , contentType: "jsonp; charset=utf-8"});
$.ajax({
url : url+query,
type: "GET",
dataType: "jsonp",
jsonp : "callback",
jsonpCallback: "loadData",
success: function(data) {alert("Success");},
error: function(data) { alert("Error"); },
});
});
});
这是我的JSON输出,我可以在Firebug中看到
{"stocks": [
{
"symbol": "IPOD",
"price": 20.2182603350167,
"change": 0.3128265006354697
}
]}
由于 拉杰什
答案 0 :(得分:0)
那是JSON,而不是JSONP。如果您正在进行跨域JSON请求,则它必须是JSONP而不是JSON。不同的端口是跨域的。
这是您的请求应根据您的代码返回的JSONP。此外,您的loadData方法将被jquery IIRC覆盖。
loadData({"stocks": [
{
"symbol": "IPOD",
"price": 20.2182603350167,
"change": 0.3128265006354697
}
]})