【问题标题】:How to properly parse JSONP callback function in Meteor?如何正确解析 Meteor 中的 JSONP 回调函数?
【发布时间】:2015-10-03 22:59:00
【问题描述】:

有人知道如何在 Meteor 服务器方法中解析 JSONP 回调吗?

我愿意

let response = HTTP.call('GET', AVIASALES_API_ENDPOINTS.getLocationFromIP, {
  params: {
    locale: 'en',
    callback: 'useriata',
    ip: clientIP
  }
});

在 response.content 我得到了

useriata({"iata":"MSQ","name":"Minsk","country_name":"Belarus"})

如何正确解析?

【问题讨论】:

  • @Lzumskee javascript 具有内置于 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 中的 JSON 功能
  • @MarkUretsky,谢谢,但我得到一个字符串,其中包含包装在函数中的 json。我不知道如何在 Meteor 中正确解析它。 JSON.parse 返回SyntaxError: Unexpected token u。我需要建议如何解决 Meteor 应用程序中的情况
  • @lzumskee 我回答了一个例子,也许这可以帮助?
  • @MarkUretsky,感谢您的回答。我创建了一个游乐场,向您展示我的工作。 meteorpad.com/pad/ru3LTpELLGayJQppS/Leaderboard 请检查 /server/app.js 文件和控制台。如您所见,我的 response.data 变量为空。在 response.content 我得到一个带有回调的字符串,这是我之前添加的。我需要解析它并从这个回调中返回数据。
  • @lzumskee 谢谢我现在去看看

标签: api meteor jsonp


【解决方案1】:

了解您真正想要完成的工作会有所帮助吗?但这里有一个工作示例,meteor 实际上并没有对请求做任何不寻常的事情。

Meteor.startup(function () {
    var result = HTTP.call("GET", "https://api.github.com/legacy/repos/search/meteor", {
        params: {},
        headers: {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
        }
    });
    console.log(result.data); // it's js object you can do result.data.repositories[0].name
    console.log(JSON.stringify(result.data)); // json string
    console.log(JSON.parse(JSON.stringify(result.data))) // if for some reason you need to parse it this way will work, but seems unnecessary 
});

更新:您从响应中返回的字符串不是有效的 JSON,因此您无法解析它使用一些正则表达式来删除无效字符串,这里是工作示例:http://meteorpad.com/pad/JCy5WkFsrtciG9PR5/Copy%20of%20Leaderboard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 2015-09-20
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多