我有这个API
[HttpGet("data")]
public dynamic GetData(){
return context.DataTable.ToList();
}
我尝试使用此代码段在我的Javascript上调用它;
function getData(){
var xhttp = XMLHttpRequest();
xhttp.open("GET", "api/myclass/data", true);
xhttp.setRequestHeader("Content-type","application/json");
xhttp.send();
var resp = xhttp.responseText;
}
但是,它只返回空XMLHttpRequest
。
我认为URL有什么问题。我如何能够将API调用到我的Javascript中?
答案 0 :(得分:1)
请求可能需要一段时间才能收到回复,因此您必须等待。这样的事情。
function getData(){
var xhttp = XMLHttpRequest();
xhttp.open("GET", "api/myclass/data", true); //the request is asynchronous
xhttp.onreadystatechange = function(){
if(this.readyState == 4 && this.state == 200){ //**this** is xhttp
//data are received and ready to use
var resp = this.responseText;
//do whatever you want with resp but never try to **return** it from the function
}
}
xhttp.setRequestHeader("Content-type","application/json");
xhttp.send();
//var resp = xhttp.responseText; //too early ;(
}
答案 1 :(得分:1)
由于你没有回答你的回答,我认为你的后端有问题。但是,这是一个功能解决方案的样本:
<!DOCTYPE html>
<html>
<body>
<h2>Using the XMLHttpRequest Object</h2>
<div id="demo">
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</div>
<script>
function loadXMLDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
console.log("Status is: "+this.status);
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "xmlhttp_info.txt", true);
xhttp.send();
}
</script>
</body>
</html>
&#13;
您可以找到更多信息here。但是在行
xhttp.open("GET", "api/myclass/data", true);
第二个参数是ur服务器中文件的地址。你确定你的格式正确吗? ur data
文件的扩展名是什么。
我猜,后端和前端都应该重新考虑。要做到这一点:
要确保使用
创建async = false
xhttp.open(&#34; GET&#34;,&#34; api / myclass / data&#34;,false);
因此,@ Alex Kudryashev指出不会有延迟
解决方案:
您需要先找到行
的结果console.log("Status is: "+this.status);
在你的浏览器控制台中。
如果你让responseText
为空,可能会因为你从后端发送一个空字符串,(我们不确定因为你没有用邮递员测试你的后端)但是它至关重要知道回应的状态。