SpringMVC中ajax传值,后台怎么着拿到

当ajax的contentType=application/x-;charset=utf-8;后台能够用request.getparammeter的主意得到,可是当为applicaiton/json,后台就无法赢得了,作者百迈过,知道原因,不过假若contentType为applicaiton/json,后天什么取值呢?有未有怎样简单的艺术,譬喻用注明。

function GetString(type, contentType, data, dataType) {            
    //var realData = "{ \"action\": \"getString\", \"num\": \"123\" }";
    //var realData = "{ action: 'getString', num:123 }";
    var realData = "action=getString&num=123";            
    if (data == "objectData") {
        realData = { action: "getString", num: "123" };
    }
    $.ajax({
        type: type,
        url: "ajaxForm.aspx/GetString",
        contentType: contentType,
        data: realData,
        dataType: dataType,
        success: function (data) {
            //【1】后台数据转化成json字符串或直接返回
            //var json = eval('(' + data + ')');
            //alert("json=" + json);
            alert("data=" + data);
        },
        error: function (error) {
            alert("error=" + error);
        }
    });
}

WebAPI传递参数碰到的主题材料

一、post请求+contentType=”application/json;charset=utf-8;”

1、data:{action:”getString”,num:”123”}
束手无措平常调用后台方法
2、data:”{action:’getString’,num:123}”
能够平时调用后台方法
3、data:”action=getString&num=123”
没辙正常调用后台方法

Ajax的格式:

二、post请求+contentType=”application/x-www-form-urlencoded;charset=utf-8;”

1、data:{action:”getString”,num:”123”}
在Page_Load(卡塔尔中能够因而Request.Form[]取得参数值
2、data:”{action:’getString’,num:123}”
在Page_Load(卡塔尔中不可能透过Request.Form[]拿到参数值
3、data:”action=getString&num=123”
在Page_Load(卡塔尔中得以由此Request.Form[]获取参数值

    $.ajax({
        type: "get", //数据发送的方式(post 或者 get)
        url: "/admin/index", //要发送的后台地址
        data: { val1: "1", val2: "2" }, //要发送的数据(参数)格式为{'val1':"1","val2":"2"}
        dataType: "json", //后台处理后返回的数据格式
        success: function(data) {//ajax请求成功后触发的方法
            alert('请求成功');
        },
        error: function(msg) {//ajax请求失败后触发的方法
            alert(msg); //弹出错误信息
        }
    });

三、get请求+contentType=”application/json;charset=utf-8;”

1、data:{action:”getString”,num:”123”}
不能够通常调用后台方法
2、data:”{action:’getString’,num:123}”
束手就擒正常调用后台方法
3、data:”action=getString&num=123”
束手自毙不荒谬调用后台方法

 

四、get请求+contentType=”application/x-www-form-urlencoded;charset=utf-8;”

1、data:{action:”getString”,num:”123”}
在Page_Load(卡塔尔(قطر‎中得以透过Request.QueryString[]赢得参数值
2、data:”{action:’getString’,num:123}”
在Page_Load(卡塔尔国中不恐怕通过Request.QueryString[]得到参数值
3、data:”action=getString&num=123”
在Page_Load(卡塔尔(قطر‎中可以透过Request.QueryString[]得到参数值

后台实体类(Person):

namespace WebApi.Models
{
    public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string EnglishName { get; set; }
    }
}

后台接口:

public class TestController : ApiController
{
    public Person GetEnglishName(int ID, string Name)
    {
        Person man = new Person();
        man.ID = ID;
        man.Name = Name;
        man.EnglishName = "Bert";
        return man;
    }
}

前端Ajax请求:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="Scripts/jquery-1.10.2.min.js"></script>
    <title></title>
</head>
<body>
    <input type="submit" id="testId" /><input type="text" id="text1" />
</body>
</html>

<script type="text/javascript">
    $("#testId").click(function() {
        $.ajax({
            url: "/api/Test/GetEnglishName",
            type: "GET",
            data: { "ID": 1, "Name": "yzc" },
            success: function(data) {
                $("#text1").val(data.EnglishName);
            }
        });
    });
</script>

结果:

图片 1

 

如上,那是最家常的一回WebApi的Ajax乞求,接下去我们来说多少个相比独特的事例。代码订正如下:纯白荧光笔的都以改动的代码。