通过Ajax post Json类型的数据到Controller

View

function postSimpleData() {
        $.ajax({
            type: "POST",
            url: "/Service/SimpleData",
            contentType: "application/json", //必须有
            dataType: "json", //表示返回值类型,不必须
            data: JSON.stringify({ ‘foo‘: ‘foovalue‘, ‘bar‘: ‘barvalue‘ }),  //相当于 //data: "{‘str1‘:‘foovalue‘, ‘str2‘:‘barvalue‘}",
            success: function (jsonResult) {
                alert(jsonResult);
            }
        });
    }
    function postListString() {
        $.ajax({
            type: "POST",
            url: "/Service/ListString",
            contentType: "application/json",
            dataType: "json",
            data: JSON.stringify({ "BuIds": ["1", "2", "3"] }),
            success: function (jsonResult) {
                alert(jsonResult);
            }
        });
    }
    function postEmployees() {
        $.ajax({
            type: "POST",
            url: "/Service/Employees",
            contentType: "application/json",
            dataType: "json",
            data: JSON.stringify({
                "Employees": [
                                    { "firstName": "Bill", "lastName": "Gates" },
                                    { "firstName": "George", "lastName": "Bush" },
                                    { "firstName": "Thomas", "lastName": "Carter" }
                                 ]

            }),
            success: function (jsonResult) {
                alert(jsonResult);
            }
        });
    }

Controller

[HttpPost]
        public ActionResult SimpleData(string foo, string bar)
        {
            return Json("SimpleData", JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public ActionResult ListString(List<string> buIds)
        {
            return Json("ListString", JsonRequestBehavior.AllowGet);
        }
        [HttpPost]
        public ActionResult Employees(List<Employee> Employees)
        {
            return Json("Employees", JsonRequestBehavior.AllowGet);
        }
public class Employee
    {

        public string FirstName { get; set; }

        public string LastName { get; set; }
    }

结果

值得注意的有2点:

1)Ajax 选项中

 contentType: "application/json"

这一条必须写,表明request的数据类型是json。

dataType: "json"  

这一条表示返回值的类型,不必须,且依据返回值类型而定。

2)选项中

data: JSON.stringify({ ‘foo‘: ‘foovalue‘, ‘bar‘: ‘barvalue‘ })  

很多时候我们将数据写作:

{ ‘foo‘: ‘foovalue‘, ‘bar‘: ‘barvalue‘ }

这样会导致错误,因为js会默认将这个json对象放到表单数据中,故而导致controller接收不到。

有两种办法处理:第一种方式是用JSON.stringify()函数,其中JSON被Ecmascript5定义为全局对象。有关该函数的用法,见此处

第二种方式是直接用双引号包裹起来,比如data: "{‘str1‘:‘foovalue‘, ‘str2‘:‘barvalue‘}"。

时间: 2024-08-09 10:31:17

通过Ajax post Json类型的数据到Controller的相关文章

Ajax获取 Json文件提取数据

摘自 Ajax获取 Json文件提取数据 1. json文件内容(item.json) [ { "name":"张国立", "sex":"男", "email":"[email protected]", "url":"./img/1.jpg" }, { "name":"张铁林", "sex"

如何使用ajax将json传入后台数据

首先采用jquery内部封装好的方法是比较简单的,我们只需做的就是修改里面的一些配置: 对$.ajax()的解析: $.ajax({ type: "POST", //提交方式 contentType: "application/json; charset=utf-8", //内容类型 dataType: "json", //类型 url: "前台地址/后台方法", //提交的页面,方法名 data: "paramet

通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法

现在在做的项目用到了SpringMVC框架,需要从APP接收请求的JSON数据,为了测试方便,所以直接先用AJAX进行测试,不过刚开始用平时用的ajax方法,提交请求会出现415或者400错误,经过研究,终于可以了,现在做个总结. js代码: function postSimpleData() {         $.ajax({             type: "POST",             url: "/Service/SimpleData",   

jquery ajax提交json格式的数据,后台接收并显示各个属性

我的表单如下: <form onsubmit="return false"> <ul> <li><span>用户名</span> <input type='text' placeholder='请输入用户名' name='user'></li> <li><span>密码</span> <input type='text' placeholder='请输入密码'

关于ajax接受json格式的数据

<body> <form action=""> <select id="college" name="college" ></select> </form> <script> var xmlHttp = ""; function getXmlHttpRequest(){ if(window.XMLHttpRequest) xmlHttp = new XML

AJAX获取JSON形式的数据

test.html: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></

Ajax结合Json进行交互数据(四)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <

ajax 上传文件,post上传文件,ajax 提交 JSON 格式的数据

ajax简介 前后台做数据交互 前后端做数据交互的方式(三种): (1)浏览器窗口输入地址(get的方式)(2)form表单提交数据(3)ajax提交数据 特点 特点: (1)异步 异步与同步的区别:同步是请求发过去,要等着回应:异步不需要等待,可以进行其他操作 (2)局部刷新 使用 使用: (1)url:匹配的路由 (2)type:发送的的方式 (3)data:发送的数据 (4)success:发送的数据成功回调条数 $('.btn').click(function () { $.ajax({

关于ajax接受json格式的数据二(使用jquery方式)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <