Ajax方式传json到controller的几种形式
来源:互联网 发布:网购电影票软件 编辑:程序博客网 时间:2024/05/29 17:54
function getVehiclesPreLocation(dataArray) {
var arr = new Array();
for (var i = 0; i < dataArray.length; i++) {
arr.push(JSON.parse(dataArray[i]).No);
}
var dataSend = JSON.stringify({ "data": '' + JSON.stringify(arr) + '' });//此处的”data”即为action的入参名
$.ajax({
type: "POST",
url: "/控制器类名/Action方法名",
contentType: "application/json",//必须有
dataType: "json", //表示返回值类型,不必须
data: dataSend,//相当于 //data: "{'str1':'foovalue', 'str2':'barvalue'}",
success: function (jsonResult) {
//获取数据ok
alert(jsonResult);
}
});
};
[HttpPost]
public ActionResult GetMyData(string data)
{
if (string.IsNullOrEmpty(data)) return null;
var noList = JsonConvert.DeserializeObject<List<string>>(data);
string jsonString = _srv.GetData(noList);
return Json(jsonString);
}
-----------------------------------------------------------------------------------
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'}"。
- Ajax方式传json到controller的几种形式
- JSON的几种调用形式
- 通过Ajax post Json类型的数据到Controller
- ajax发送json数据到springmvc的controller
- 通过Ajax post Json类型的数据到Controller
- 通过Ajax post Json类型的数据到Controller
- 通过Ajax post Json类型的数据到Controller
- 调用Controller方法的几种方式
- json返回到客户端的几种方式
- JSON进阶三-JSON的几种调用形式
- 输入域名,localhost,直接跳转到controller的几种方式:
- JSON与Javabean转换的几种形式
- JSON与Javabean转换的几种形式
- 通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法
- Controller取得ajax传递的json
- angular 在controller中共享数据的几种方式
- Controller响应界面跳转的几种方式
- springMVC中controller的几种返回方式
- 关于blockchain各种方法
- JNI用法
- maven打包编译java类时指定jdk版本和编码格式
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
- MySQL 数据类型
- Ajax方式传json到controller的几种形式
- CentOS7上安装jdk和tomcat
- Java--面向对象
- 00102 python列表操作总结
- 基类和派生类指针转换--dynamic_cast
- 读取jar包所在目录和jar包内文件
- Struts1和Struts2的区别和对比:
- 前端可视化编程:liveReload安装,sublime 3
- spring中使用字符串注入collection,如set/array