使用jsonp使用jQuery跨域获取请求

时间:2013-11-13 02:25:21

标签: jquery ajax api cross-domain jsonp

我无法获得使用jQuery的跨域请求,似乎无法弄清楚发生了什么。基本上我正在尝试查询Solr服务器,并且都没有调用成功或错误函数。在Chrome的Javascript控制台中,我没有遇到任何错误。此外,当我只在URL栏中键入“mysolrserver /?wt = json& q = title:uw”时,我会得到一个json格式的字符串。

我用“mysolrserver”替换了我的ip。 提前谢谢!

我的javascript文件:

"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”:{ “状态”:0 “QTIME”:2 “PARAMS”:{ “Q”: “标题:UW”, “回调”: “JQ uery1102035263595171272755_1383771206800”, “_”: “1383771206801” “重量”: “JSON”}}, “RESP ONSE”:“

所以我假设你的意思是: “回调”: “jQuery1102035263595171272755_1383771206800”

1 个答案:

答案 0 :(得分:0)

jQuery正在一个名为callback的参数中发送一个函数名,它需要你的JSON服务在它返回时调用。根据{{​​3}},Solr需要将此参数称为json.wrf。尝试像这样添加the Solr wiki

    $.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.
      }
    });