我正在尝试使用this api创建ROBLOX资产ID返回器。我正在使用产品信息函数/api get request。我已经创建了一个脚本,但是当我非常接近完成时,我不断地得到错误Uncaught (in promise) SyntaxError: Unexpected end of input at script.js:8:42
。
如果有人能帮忙,我将不胜感激!
我将在下面链接我的代码。
- JavaScript代码**
function convert()
{
var input = document.getElementById("AssetConverterArea").value;
var output = document.getElementById("assetIdReturn");
var webRequest = fetch('https://api.roblox.com/marketplace/productinfo?assetId=' + input, {'mode': 'no-cors'});
var assetId = webRequest.AssetId;
webRequest.then(responce => responce.json()).then(d => {
console.log(responce)
assetId = d.AssetId;
});
if (assetId === undefined)
{
output.innerHTML = "Invalid Asset ID";
} else {
output.innerHTM = 'Your asset ID is: ' + assetId;
}
}
- HTML代码**
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home</title>
<link rel="icon" type="image/x-icon" href="Media/assetid.png">
<link rel="stylesheet" href="style.css">
<script src="script.js" defer></script>
</head>
<body>
<header>
<nav>
<ul class="navLinks">
<li class="navLink"><a href="index.html" class="navHref">Home</a></li>
<li class="navLink"><a href="credits.html" class="navHref">Credits</a></li>
<li class="navLink"><a href="about.html" class="navHref">About</a></li>
</ul>
</nav>
<span class="favicon"><img src="Media/assetid.png" alt=""></span>
</header>
<div class="line"></div>
<h1 class="title">Asset Converter</h1>
<p class="description">
This website is a simple tool to convert your Roblox decal & library IDs into Roblox Asset IDs. <br><span style="font-weight: 800;"> Thank you for checking out the website!</span>
</p>
</p>
<div class="AssetDiv"><textarea placeholder="Decal ID" id="AssetConverterArea"></textarea></div>
<button class="convertButton" onclick="convert()"><span class="convertText">Convert</span></button>
<p id="assetIdReturn">Convert your ID, and get a return!</p>
<p class="sourceCode">This entire project's source code is free for you to check out on <a style="color: rgb(73,0,250); text-decoration: none;" href="https://github.com/hartleyfr/RobloxAssetReturner/tree/main">my github</a></p>
</body>
</html>
我尝试使用CORS-Everywhere函数,但没有效果。我尝试使用StackOverflow上的修复程序,但它不起作用。
我期望它按如下方式工作
- 获取API返回和表,在表中查找资产ID,如果代码找不到assetId,它会说ID无效,并要求它重新执行。如果找到了,它会将其显示给用户。*
2条答案
按热度按时间gcuhipw91#
您的请求中存在一系列承诺解析方面的问题,但简单地说,此概念是不可能的,因为如果不在浏览器级别禁用CORS,您就无法运行此脚本,出于安全原因,您无法从网页执行此操作。
您正在传递请求模式
no-cors
,但这意味着响应不能被您的JS代码访问。https://developer.mozilla.org/en-US/docs/Web/API/Request/mode这个获取永远不会起作用,因为API不允许跨域服务器发出请求。
vhipe2zx2#
为此,您需要从服务器(例如Node.js服务器)发出ROBLOX API请求,并使HTML页面与服务器交互(最简单的方法是创建CORS代理,如答案https://stackoverflow.com/a/43268098/19461620所示)