使用jsonp的jQuery跨域get请求
我在获取跨域请求以使用jQuery时遇到问题,似乎无法了解发生了什么。基本上,我正在尝试查询Solr服务器,但没有调用success或error函数。在Chrome的Javascript控制台中,我没有收到任何类型的错误。此外,当我只在url栏中键入“mysolrserver/?wt=json&q=title:uw”时,我会得到一个json格式的字符串 我用“mysolrserver”替换了我的ip。 提前谢谢你 我的javascript文件:使用jsonp的jQuery跨域get请求,jquery,ajax,api,cross-domain,jsonp,Jquery,Ajax,Api,Cross Domain,Jsonp,我在获取跨域请求以使用jQuery时遇到问题,似乎无法了解发生了什么。基本上,我正在尝试查询Solr服务器,但没有调用success或error函数。在Chrome的Javascript控制台中,我没有收到任何类型的错误。此外,当我只在url栏中键入“mysolrserver/?wt=json&q=title:uw”时,我会得到一个json格式的字符串 我用“mysolrserver”替换了我的ip。 提前谢谢你 我的javascript文件: "use strict"; (function()
"use strict";
(function() {
window.onload = function(){
document.getElementById("search").onclick = request;
}
function request(){
$.ajax('mysolrserver/?wt=json&q=title:uw', {
dataType: 'jsonp',
success: function(data){
alert("Success");
},
error: function(error, data, type){
alert(data + ": " + type + "."); //type isn't giving any response.
}
});
}
})();
更新:
在我从服务器得到的json响应中,开头部分是这样的(我选择了“response”部分,因为它返回大量文本):
{“responseHeader”:{“status”:0,“QTime”:2,“params”:{“q”:“title:uw”,“callback”:“jQ”uery1102035263595171272755_1383771206800“,“_213771206801”,“wt:“json”}”,分别为onse:'
所以我想你的意思是:
“回调”:“jQuery1102035263595171272755_1383771206800”jQuery正在发送一个名为
回调
的参数中的函数名,它需要您的JSON服务在返回时调用该参数。Solr需要根据调用该参数。尝试这样添加:
$.ajax('mysolrserver/?wt=json&q=title:uw', {
jsonp: 'json.wrf',
dataType: 'jsonp',
success: function(data){
alert("Success");
},
error: function(error, data, type){
alert(data + ": " + type + "."); //type isn't giving any response.
}
});
jsonp响应格式必须是
jsonpcallback({})
wherejsonpcallback
是从客户端传递的回调函数的名称服务器期望的jsonpcallback参数名称是什么?请发布完整的json响应。它不是jsonp响应…如何?我如何做出jsonp响应?你的意思是像Dan在下面的回答中提到的那样吗?我试着用它作为my TA推荐了它,但没有任何区别。只是再次尝试以确保它,但仍然没有运气。如果您手动操作(在浏览器中转到mysolrserver/?wt=json&json.wrf=callme&title:uw
),solr是否在函数调用中正确包装它发送的对象?如果没有,您将需要帮助,是的(因为我没有使用查询,所以需要0个文档):callme({“responseHeader”:{“status”:0,“QTime”:0,“params”:{“json.wrf”:“callme”,“wt”:“json”}},response:{“numFound”:0,“start”:0,“docs”:[]})