javascript - JSONP使用JQuery从HTTPS协议(protocol)中获取JSON

标签 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 中看到了数据,但出现“无效标签”错误。我读过,为了解决这个问题,您将它包含在带有额外括号的 eval 函数中,但这不起作用。

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

我还收到一条错误消息,指出我的 $.ajax 请求是“未定义的”,但我可以在响应中看到数据。我怀疑这与我获取初始数据的方式有关。任何意见,将不胜感激。谢谢!

最佳答案

例如,您可以使用 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

下面是一个跨域获取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

希望对你有帮助

关于javascript - JSONP使用JQuery从HTTPS协议(protocol)中获取JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780702/

相关文章:

javascript - Extjs Grid - 自定义空/未定义的单元格

javascript - : redundant HTML layouts, 和不必要的 JavaScript 执行哪个更可取?

c# - 使用 XElement 在 XHTML 中包含 js 文件

jquery - 如何销毁/删除/解除绑定(bind) Flexslider

c# - Ajax.beginform 执行完整回发而不是部分回发

php - 如何将 PHP 变量传递给 colorbox?

javascript - 动画改变div的位置

javascript - 滚动到相对于 ID 的位置

javascript - 表单重置无法使用 jquery

javascript - 图表未根据从 Jquery 收到的值进行更新