使用jQuery Ajax将单个参数传递给WebApi控制器

时间:2015-05-28 18:54:10

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

我正在尝试将单个参数(字符串值)传递给webapi控制器,但它无法正常工作。参数值以'null'的形式到达控制器。这是我的WebApi配置,

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
               name: "DefaultApi",
               routeTemplate: "api/{controller}/{action}"
           );

        }
    }

控制器:

        [HttpPost]
        public HttpResponseMessage GetDataView(string request)
        { 
            try
            {
                var result = DB.GetDataView(request);

                return Request.CreateResponse(HttpStatusCode.OK, result);
            }
            catch (Exception ex)
            {            
                //todo: log exception   
                throw ex;
            }
        }

AJAX

var serverName = 'ds100';
 $.ajax({
        url: 'api/ServerInfo/GetDataView',
        type: 'POST',
        dataType: 'json',
        data: serverName,
        success: function (data, textStatus, xhr) {

        },
        error: function (xhr, textStatus, errorThrown) {

        }

我错过了什么吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

问题似乎在于你的ajax参数data参数接收一个对象(json),它为你在请求中传递的每个值保存一个属性,我认为你应该使用

 var serverName = 'ds100';
 $.ajax({
    url: 'api/ServerInfo/GetDataView',
    type: 'POST',
    dataType: 'json',
    data: {request: serverName} ,
    success: function (data, textStatus, xhr) {

    },
    error: function (xhr, textStatus, errorThrown) {

    }

那应该这样做