请求JSONP时的text / html输出

时间:2014-12-17 23:09:09

标签: javascript jquery ajax json

上周我一直在玩jQuery库。

非常方便!我现在正在玩AJAX请求来检索诸如天气,当前下载等内容,这些内容目前进展顺利!

我现在尝试连接到我的ISP以获取当前的数据使用情况(峰值,非峰值等)。

当我使用Chrome时,我可以手动将变量键入URL,并在浏览器中显示所需的JSON代码。问题是,它似乎返回text/html而不是application/json

当您使用开发人员工具时,会显示text/html。这使我很难使用AJAX和JSONP从我的家庭服务器检索数据。请参阅此处查看失败的查询(但您仍然可以看到text/html输出,该输出采用JSON格式!

Failed JSON Query on ISP

我的问题是,如何从服务器URL获取此数据,然后将其转换为jQuery可以读取的JSON?

当我尝试.load$.get函数时,我遇到了跨源问题......

编辑:Here is the PDF documentation for the API (Download at the bottom of the page) 请注意,我需要附加某些值(user / pass / token)。我的最终目标是让我的JS读取这些值并存储它们。

2 个答案:

答案 0 :(得分:2)

  

问题是,它似乎返回text/html而不是application/json

这是服务器端问题。去提交错误报告。

  

这使我很难检索数据

不是单独的。您应该能够覆盖解析响应的设置,例如在jQuery中使用datatype参数。

  

使用AJAX和JSONP

请注意,您无法使用JSONP,因为该API不支持{从文档和简单的?callback=test尝试判断)。如果您需要支持,请向服务提供商提交错误报告。

  

当我尝试.load$.get函数时,我遇到了跨源问题......

是。他们也不发送CORS标头。我怀疑此API仅在内部使用,并且由不受同源策略约束的设备使用。

  

如何从服务器URL获取此数据,然后将其转换为jQuery可以读取的JSON?

在您自己的服务器上使用proxy(与您的应用在同一个域中运行)。它还可以修复content-type标题。

有关更多详细信息,请参阅Ways to circumvent the same-origin policy,但大多数方法都需要服务提供商的合作(以实现服务器端功能)。

答案 1 :(得分:1)

如果我理解正确你要求某个值,它会给你一个字符串。对于世界上的大多数API,他们发送一个字符串,您必须将其解析为JSON或某些语言代码。我建议查看Parsing JSON Strings链接。它解释了如何获取格式良好的字符串并将其解析为JSON可读对象。

var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" );

如果你继续下去并开始使用php,请看一下Parsing JSON Strings with PHP

修改

使用.done()方法在AJAX调用后从其他页面获取文本。

$.ajax(...).done(function(html){
    //do what you want with the html from the other page
    var object = $.parseJSON(html)
}