javascript - 发送数据到 WebAPI (C#) GET 请求 Ajax 调用

标签 javascript c# jquery ajax asp.net-web-api

我想使用html来获取WebApi ReturnValue。 (类型:Get、数据类型:Jsonp)

现在当我直接执行WebApi时,可以得到ReturnValue“2”(表示执行成功)。

但是当通过 html + Jquery + ajax 时,它总是显示错误函数信息。 enter image description here

我如何解决这个问题,谢谢。

-------------代码-------------

API模型:

 public class LoginModel
    {
        public int Userno { get; set; }
        public List<Second> LoginSecond { get; set; }
    }
    public class Second
    {
        public string testinfo01 { get; set; }
        public string testinfo02 { get; set; }
        public List<Third> Third { get; set; }
    }

    public class Third
    {
        public string finValue { get; set; }
    }

API Controller :

 [HttpGet]
    public string Get(string id, string id1) //id=Account,id1=password
    {
        string conn = ConfigurationManager.ConnectionStrings["testconn"].ConnectionString;
        string Dictionary = Login.Login(id, id1).ToString();
        return Dictionary;
    }

HTML:

<div class="form" id="form"> 
    <form class="login-form" method="get">
    <input type="text" id="inpAcc" placeholder="Acc"/>
    <input type="password" id="inpPwd" placeholder="pwd"/>
    <input id="loginbtn" type="button" value="login"></input>
    <input id="data" type="label" />
  </form>
</div>

jquery + ajax:

<script type="text/javascript" >
    $(document).ready(function() {
          $(document).on('click', '#loginbtn',function(){
                var username = $("input#inpAcc").val();
                var password = $("input#inpPwd").val(); 
                alert(username);
                var APIurl = "localhost:10733/Api/Login/";
              $.ajax({
                  type: "get",
                  dataType: 'jsonp',
                  username:username,
                  password:password,
                  url: APIurl +"/"+username+"/"+password,
                  async: false,
                  headers: { "cache-control": "no-cache" },
                  contentType: 'application/json; charset=utf-8',

               data :function (data)
               {
                var returnvalue = data[0].request();
                console.log(data.stat);
                console.log(data.status);
                console.log(data.message);
                console.log(data.html);
                alert(returnvalue);
               },
              error: function(request, status, error) {

                console.log(request.stat);
                console.log(request.status);
                console.log(request.message);
                console.log(request.html);
                alert(request.responseText);
              },
              success: function(data) {
                console.log(data.stat);
                console.log(data.status);
                console.log(data.message);
                console.log(data.html);
                alert(data);
              }
          });        
      });
  });
</script>

最佳答案

请检查您的来源。删除路由配置,如下所示源包含内联路由配置。

[RoutePrefix("api/Login")]
public class LoginController : ApiController
{
    [HttpGet]
    [Route("Get/{id}/{id1?}")]
    public string Get(string id, string id1 = null) //id=Account,id1=password
    {
        return "Working";
    }
}

要调用上面的 api,您的 url 应该类似于

http://localhost:11299/api/login/Get/id/id1/

上面的id1是可选的

关于javascript - 发送数据到 WebAPI (C#) GET 请求 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41581782/

相关文章:

javascript - 从 fancybox iframe 在网站上查找元素

javascript - 如何将 Canvas 元素聚焦在对象标签内?

javascript - 如何知道一个窗口是子窗口还是父窗口?

javascript - 将 HTML 字符串转义为 HTML 内容

c# InvalidArgument= '-1' 的值对于 'index' 无效

c# - 在同一控制台中启动进程

javascript - JavaScript 中的正则表达式只允许带有可选 2 位小数的数字

php - 使用 PHP 重命名 JavaScript 变量和函数

Javascript 强制文件缓存

c# - 我怎样才能使我的函数在 ArrayList 上以 "Contains"的速度运行?