【问题标题】:Callback parameter not working JSONP javascript回调参数不起作用 JSONP javascript
【发布时间】:2020-09-26 10:09:29
【问题描述】:

我正在尝试使用 JSONP 跨域加载数据表单。在脚本中传递的回调参数不会在控制台中打印任何数据。

我将从另一台服务器加载week-7.js,但我在本地尝试它不起作用。我无法更改服务器端部分的任何代码我无权更改它

我把这个<script> 放在 HTML 中

<button onclick="clickButton()">click me</button>

<script>
    function renderTable(data){
      console.log(data)
    }

    function clickButton() {
      var s = document.createElement("script");
      s.type = "text/javascript"
      s.src = "week-7.js?callback=renderTable";
      document.body.appendChild(s);
    }
</script>

这是我的第 7 周.js

const data = {
  "noWeek": 1,
  "fstWeek": 1,
  "week": 1,
  "end": 1591459131848,
  "profiles": {
    "test1": {
      "id": "test1",
      "type": "3",
      "name": "test test",
      "picture": {
        "uri": "/flag.png"
      },
      "country": "IN",
      "ed": 1,
      "gs": 100,
      "ts": 13.0,
      "in": 31,
      "px": 34
    }
  },
  "leaders": [
    "test1"
  ]
}

有什么问题吗?有什么建议吗?

【问题讨论】:

    标签: jsonp


    【解决方案1】:

    为了让您开始,您可以:

    1 - 将本地数据文件更改为 jsnop,方法是删除 '=' 并以 'data({' 开头并在末尾放置一个右括号 ')'。

    2 - 将此添加到您的 HTML:

    <h3>Output</h3>
    <div id='x'></div>
    

    3 - 将您的回调函数更改为:

    function data(y){
    document.getElementById('x').innerHTML=JSON.stringify(y, null, 2)
    }
    

    如果您手动将回调函数名称(数据)添加到数据文件中,则无需在调用脚本中添加回调名称 - 它会在本地被忽略,并且可能会被服务器忽略。但是,如果您从 Yahoo Finance 等获取第三方远程数据,您可能需要在 URL 中放置一个回调名称,并且可能需要使用诸如 https://json2jsonp.com 之类的服务

    该过程通过将数据文件更改为对回调函数的函数调用来工作。

    一句警告。如果您在回调函数之外添加更多相关脚本,事情可能会停止工作。首先让它在函数内部工作。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 1970-01-01
      • 2014-04-03
      • 2014-08-14
      • 2013-09-24
      • 2016-07-02
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多