繁体   English   中英

REST API的XHTTP请求

[英]XHTTP request from REST API

我有这个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出了问题。 我怎么能调用我的Javascript API?

该请求可能需要一些时间才能收到响应,因此您必须等待。 这样的事情。

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 ;(
}

由于您尚未检查您回答的答复,因此我怀疑您的后端出了点问题。 但是,这是功能解决方案的示例:

 <!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> 

您可以在此处找到更多信息。 但是在行

xhttp.open("GET", "api/myclass/data", true);

第二个参数是ur服务器中文件的地址。 您确定您输入了正确的格式吗? ur data文件的扩展名是什么。

我想,后端和前端都应该重新考虑。 去做吧:

  1. 尝试使用邮递员发送请求到后端
  2. 在前端使用我的答案检查响应状态
  3. 为了确保使其与async = false

    xhttp.open(“ GET”,“ api / myclass / data”,false);

因此,@ Alex Kudryashev指出,不会有延迟


解:

您需要先找到line的结果

console.log("Status is: "+this.status);

在您的浏览器控制台中。

如果您将responseText设为空,则可能是因为您从后端发送了一个空字符串(我们不确定,因为您尚未使用邮递员测试您的后端), 但是了解响应的状态至关重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM