【问题标题】:Call WebApi method using Ajax使用 Ajax 调用 WebApi 方法
【发布时间】:2015-08-24 16:58:26
【问题描述】:

我编写了一个 WebApi 项目,它获取名字和姓氏作为输入参数并返回所有信息。我使用 RestShop 调用 webApi 并返回数据。这正在工作并且正在返回,但由于某种原因,我必须使用 Ajax 调用来调用 api。我无法让 Ajax 调用正常工作。我在这个网站上使用了不同的链接,但它返回给我空数据和错误。对于两个警报,它都为空:警报(名字);最后返回 [object][object] 错误。

这是正在工作的 RestShop:

 public List<Data> GetData(string FirstName, string LastName)
    {
        RestClient _client = new RestClient();
        string _url = "http://localhost:51142";
        _client = new RestClient(_url);


        //DocGen/Documents/GetByFLName/TERRI/TIMMERMAN
        var request = new RestRequest("Gen/Doc/GetByFLName/{FirstName}/{LastName}", Method.GET) { RequestFormat = DataFormat.Json };
        request.AddParameter("FirstName", FirstName, ParameterType.UrlSegment);
        request.AddParameter("LastName", LastName, ParameterType.UrlSegment);

        var response = _client.Execute<List<Data>>(request);
        if (response.Data == null)
            throw new Exception(response.ErrorMessage);

        return response.Data;

    }

这是调用相同方法并返回的 Ajax 代码,[object][object] 错误。

function GetEmployee() {
    jQuery.support.cors = true;
    var FirstName = $('#FirstName').val();
    alert(FirstName);
    var LastName = $('#LastName').val();
    alert(LastName);
    $.ajax({
        url: 'http://localhost:51142/Gen/Doc/GetByFLName/'+ '/' + FirstName + LastName,
        type: 'GET',
        dataType: 'json',
        success: function (data) {
                            alert(data);
        },
        error: function (x, y, z) {
            alert(x + '\n' + y + '\n' + z);
        }
    });
}

这是文本框:

First Name:
   @Html.TextBox("FirstName")

  Last Name:
  @Html.TextBox("LastName")

这是我在 webApi 中的方法:

    public IHttpActionResult GetByFLName(string id1, string id2)
    {

        DAL.DataManager dal = new DAL.DataManager();
        CMSIGateway gateway = new CMSIGateway();
        gateway = dal.Get_CM_BY_FLName(id1, id2);


        if (gateway == null)
        {
            return NotFound();
        }

        return Ok(gateway);
    }

【问题讨论】:

  • 不只是ajax请求中两个参数之间缺少斜线吗?
  • 如果它与请求页面的端口不同,则需要在 api 中启用 cors。你看到了什么错误?在开发工具网络中检查请求状态是什么?
  • @PanayotTodorov 谢谢我改变了它,但同样,我得到了错误。也警报(名字);和警报(姓氏);也是空的。

标签: jquery ajax asp.net-web-api


【解决方案1】:

你把不正确的参数放到url应该是这样的

 url: 'http://localhost:51142/Gen/Doc/GetByFLName?id1=' + FirstName + "&id2=" +LastName

【讨论】:

    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 2016-10-16
    • 2018-05-25
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多