【问题标题】:How can Firebug parse an invalid JSONP response?Firebug 如何解析无效的 JSONP 响应?
【发布时间】:2014-07-03 19:32:56
【问题描述】:

所以我只是第一次尝试 Jersey Jax-rs Web 服务,并且我已经制作了可以想象的最简单的 GET 方法。

我还创建了一个 AJAX 函数来调用 Web 服务。现在,如果我将dataType 属性设置为json,我会得到预期的“跨域”错误,这很好。

但是,当我将 dataType 更改为 jsonp 时,我惊讶地发现 Firebug 能够解析由 Web 服务发送的字符串(“Reply from webservice”),即使它不是为 JSONP 正确格式化,并在其 Console 面板中显示。

如果 Firebug 可以解析无效的 JSONP(我原以为它不应该),为什么 AJAX 似乎也无法解析它?如果我对 AJAX 调用接收到的数据进行字符串化,我只能看到,

{"readyState":4,"status":200,"statusText":"success"}

这是我的代码以获得更多上下文。

泽西网络服务

@GET
@Path("getJson")
@Produces("application/json")                     
public String getJson()
{
  return "Reply from Webservice";  
}

Javascript Ajax

function accessWebService()
{

  var query = "http://localhost:8080/test_webservice/webresources/test/getJson";

  $.ajax
  ({
      type: 'GET',
      url: query,
      dataType: 'jsonp',        
      async: true,
      timeout: 10000,
      jsonpCallback: call,
      complete: function(data) 
      { 
        console.log(JSON.stringify(data));
      }
  });

}

function call(data)
{
  console.log("jsonp");
}

Firebug 控制台输出

{"readyState":4,"status":200,"statusText":"success"}

SyntaxError: missing ; before statement
"Reply from Webservice"

【问题讨论】:

    标签: javascript ajax jakarta-ee jsonp firebug


    【解决方案1】:

    Firebug 有一些特殊的功能来解析(无效的)JSON。请参阅此文件:

    https://github.com/firebug/firebug/blob/1569514de44c0b75f5fb336691ab445663f0afca/extension/content/firebug/lib/json.js

    在此处查看函数Json.parseJSONStringpseudoJsonToJson(json)

    【讨论】:

    • 感谢 Sebastian,我期待稍后再看这个。所以本质上这可以用来通过 jsonp 获取 json,即使格式不正确?
    • 基本上是的,不过您最好在Firebug discussion group 中询问更多详细信息。当 Simon Lindholm 最终触及该代码时,他会对此有更多了解。请注意,Firebug 代码位于 BSD license 下。
    • 是的,当然,未经许可我不会使用 Firebug 代码。我实际上更感兴趣的是可以解析(无效)json,这将使我将来对 jsonp 有不同的看法。感谢您的所有帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-11-18
    • 2022-06-11
    • 2012-05-04
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多