【问题标题】:Cross domain get request with jQuery using jsonp使用 jsonp 使用 jQuery 跨域获取请求
【发布时间】:2013-11-25 11:33:46
【问题描述】:

我在获取跨域请求以使用 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 响应中,开始部分是这样的(我省略了“响应”部分,因为它返回了大量文本): {"responseHeader":{"status":0,"QTime":2,"params":{"q":"title:uw","callback":"jQ‌​uery1102035263595171272755_1383771206800","_":"1383771206801" ,"wt":"json"}},"resp‌​onse":'

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

【问题讨论】:

  • jsonp 响应格式必须为jsonpcallback({}) 其中jsonpcallback 是客户端传递过来的回调函数的名称
  • 服务器期望的jsonpcallback参数名是什么
  • 能否请您发布完整的 json 响应。
  • 这不是 jsonp 响应...
  • 怎么样?如何做出 jsonp 响应?你的意思是像丹在下面的回答中提到的那样吗?

标签: jquery ajax api cross-domain jsonp


【解决方案1】:

jQuery 在一个名为callback 的参数中发送一个函数名称,它需要您的JSON 服务在它返回时调用。 Solr需要根据the Solr wiki调用这个参数json.wrf。尝试像这样添加a jsonp: option to your jQuery ajax call

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

【讨论】:

  • 我尝试使用它,因为我的 TA 推荐它,但它没有任何区别。只是再次尝试确定,但仍然没有运气。
  • 如果您手动操作(在浏览器中转到mysolrserver/?wt=json&json.wrf=callme&title:uw),solr 是否正确包装了它在函数调用中发送的对象?如果没有,您将需要people who've worked more with solr 的帮助
  • 是的(需要 0 个文档,因为我没有使用查询): callme({"responseHeader":{"status":0,"QTime":0,"params": {"json.wrf":"callme","wt":"json"}},"response":{"numFound":0,"start":0,"docs":[]}})
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2023-04-03
  • 2011-03-05
  • 2013-08-23
  • 2013-11-02
相关资源
最近更新 更多