回调参数无法使用JSONP javascript

问题描述 投票:0回答:1

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

我将从另一台服务器加载week-7.js,但我在本地尝试无法正常工作。我无法更改服务器端部分中的任何代码,但无权对其进行更改]

我在HTML中放置了<script>

<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个回答
0
投票

要开始,您可以:

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财务等获取第三方远程数据,则可能需要在URL中放置一个回调名称,并可能使用诸如https://json2jsonp.com

之类的服务

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

警告语。如果您在回调函数之外添加其他相关脚本,则事情可能会停止。首先让它在函数中运行。

祝你好运。>>

© www.soinside.com 2019 - 2024. All rights reserved.