我正在尝试使用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"
]
}
有什么问题吗?有什么建议吗?
要开始,您可以:
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
之类的服务该过程通过将数据文件更改为对回调函数的函数调用来进行。
警告语。如果您在回调函数之外添加其他相关脚本,则事情可能会停止。首先让它在函数中运行。
祝你好运。>>