JSONP使用JQuery从HTTPS协议获取JSON

时间:2010-09-23 16:53:04

标签: javascript jquery ajax json jsonp

我正在尝试获取从https安全站点发送的JSON,

客户端希望不使用任何服务器端语言(Javascript中的全部内容)

我已经读过,当使用Jquery的.ajax函数时,我必须使用JSONP从安全站点加载JSON。

我的第一个问题是将JSONP设置为什么格式?现在我的代码看起来像这样:

html =new Object();
    html = $.ajax({
      url: "https://my-secure.net",
      async: false,
      dataType: 'jsonp'
     }).responseText;

//alert(html);       
  alert("myObject is " + html.toSource());
     console.log(html);

但是,没有任何信息被警告,Firebug中也没有任何记录。基本上我希望能够操纵JSON数据。我在Firebug下的Response中看到了数据,但是出现了“无效标签”的错误。我已经读过,为了解决这个问题,你将它包含在带有额外parantheses的eval函数中,但这不起作用。

http://b.lesseverything.com/2007/10/25/invalid-label-error-when-eval-json

我也收到一个错误,说我的$ .ajax请求是“未定义的”,但我可以看到响应中的数据。我怀疑这与我如何抓取初始数据有关。任何意见,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:6)

您可以使用getJSON作为示例

$.getJSON('ajax/test.json', function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});

检查完整的getJSON文档http://api.jquery.com/jQuery.getJSON/

修改

我错了...使用Jquery.ajax会导致跨浏览器问题但不会导致Jquery.getJSON

http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29

以下是跨域get JSON

的示例

修改

Firefox存在HTTPS问题,因为我知道如果你发送这样的请求,它将被修复

$.getJSON('ajax/test.json',{}, function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});

来源AJAX https POST requests using jquery fail in Firefox

希望这有帮助