ajax传递复杂参数

使用mvc测试Demo

================view================

@{
    ViewBag.Title = "Index";
    Layout = null;
}
<h2>ajax请求参数测试</h2>

<script src="~/Scripts/jquery-1.8.2.js"></script>
<div>
    <div id="div_Data">
        <form id="_form">

            <table>
                <tbody>
                    <tr>
                        <td><label>编号:</label></td>
                        <td><input type="text" name="ID" value="2" /></td>
                    </tr>
                    <tr>
                        <td><label>名称:</label></td>
                        <td><input type="text" name="Name" value="测试人员" /></td>
                    </tr>
                    <tr>
                        <td><label>列表:</label></td>
                        <td><input type="text" name="ListStr" value="测试A,测试B" /></td>
                    </tr>
                    <tr>
                        <td><label>日期:</label></td>
                        <td><input type="text" name="Date" value="2015-12-17 10:50:30" /></td>
                    </tr>
                </tbody>
            </table>

        </form>
    </div>
    <input id="inpBtn" type="button" value="点击事件+get" />
    <input id="inpBtn2" type="button" value="点击事件2+get" />
    <input id="inpBtn3" type="button" value="点击事件3+post" />
    <input id="inpBtn4" type="button" value="点击事件4+post" />

</div>
<script type="text/javascript">
    Array.prototype.toJson = function () {
        var json = {};
        for (var i in this) {
            var o = this[i];
            if (o.name != ‘__VIEWSTATE‘) {
                if (typeof (json[o.name]) == ‘undefined‘)
                    json[o.name] = o.value;
                else
                    json[o.name] += "," + o.value;
            }
        }
        return json;
    }
    $(‘#inpBtn‘).click(function () {
        debugger;
        var _formObj = $(‘#_form‘);
        var arr = _formObj.serializeArray();//获取表单数据
        for (var i = 0, l = arr.length; i < l;i++){
            if (arr[i].name == "ListStr") {
                var list = arr[i].value.split(‘,‘);
                delete arr[i];
                for (var j = 0, len = list.length; j < len; j++) {
                    var item = {
                        name: "ListStr",
                        value: list[j]
                    };
                    arr.push(item);
                }
                break;
            }
        }
        $.ajax({
            url: ‘/AjaxRequest/GetTestAjax‘,
            type: ‘get‘,
            data: arr,
            async: false,
            success: function (data, status) {
                debugger;
            },
            error: function (ex) {
                debugger;
            }
        });
    });

    $(‘#inpBtn2‘).click(function () {
        debugger;
        var _formObj = $(‘#_form‘);
        var arr = _formObj.serializeArray();
        var jsonObj = arr.toJson();
        jsonObj.ListStr = jsonObj.ListStr.split(‘,‘);
        var json = JSON.stringify(jsonObj);//object转字符串
        $.ajax({
            url: ‘/AjaxRequest/GetTestAjax2‘,
            type: ‘get‘,
            data: { ‘json‘: json },
            async: false,
            success: function (data) {
                debugger;
            },
            error: function (ex) {
                debugger;
            }
        });

    });
    $(‘#inpBtn3‘).click(function () {
        debugger;
        var _formObj = $(‘#_form‘);
        var arr = _formObj.serializeArray();
        var jsonObj = arr.toJson();
        jsonObj.ListStr = jsonObj.ListStr.split(‘,‘);
        var aaa = jsonObj.ListStr;
        //var list = JSON.stringify(aaa);
        //var json = JSON.stringify(jsonObj);//object转字符串
        var para = {
            test: jsonObj,
            list: aaa
        };
        var paraStr = JSON.stringify(para);
        $.ajax({
            url: ‘/AjaxRequest/GetTestAjax3‘,
            type: ‘post‘,
            contentType: "application/json",
            data: paraStr,
            async: false,
            success: function (data) {
                debugger;
            },
            error: function (ex) {
                debugger;
            }
        });
    });
    $(‘#inpBtn4‘).click(function () {
        debugger;
        var _formObj = $(‘#_form‘);
        var arr = _formObj.serializeArray();
        var jsonObj = arr.toJson();
        jsonObj.ListStr = jsonObj.ListStr.split(‘,‘);
        var json = JSON.stringify(jsonObj);//object转字符串
        $.ajax({
            url: ‘/AjaxRequest/GetTestAjax4‘,
            type: ‘post‘,
            contentType: "application/json",
            data: json,
            async: false,
            success: function (data) {
                debugger;
            },
            error: function (ex) {
                debugger;
            }
        });
    });
</script>

===============controller===============

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
namespace ContentReplace.Controllers
{
    public class AjaxRequestController : Controller
    {
        //
        // GET: /AjaxRequest/
        public ActionResult Index()
        {
            return View();
        }
        public JsonResult GetTestAjax(TestClass test)
        {
            var data = "";
            return Json(data, JsonRequestBehavior.AllowGet);
        }
        public JsonResult GetTestAjax2()
        {
            var json = Request["json"];
            var jss = new JavaScriptSerializer();
            var arr = jss.Deserialize<TestClass>(json);
            var data = "";
            return Json(data, JsonRequestBehavior.AllowGet);
        }
        [HttpPost]
        public JsonResult GetTestAjax3(TestClass test,List<string> list)
        {
            var data = "";
            return Json(data, JsonRequestBehavior.AllowGet);
        }
        [HttpPost]
        public JsonResult GetTestAjax4(TestClass test)
        {
            var data = "";
            return Json(data, JsonRequestBehavior.AllowGet);
        }
    }
    public class TestClass
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public DateTime Date { get; set; }
        public List<string> ListStr { get; set; }
    } 
}
时间: 2024-10-29 12:14:45

ajax传递复杂参数的相关文章

关于ajax 传递的参数

ajax 发送的数据,默认都是字符串,不能直接传递list(列表),或者dict(字典). 若要 传递list(列表),或者dict(字典),需要进行一些操作. list 需要进行列表序列化,在ajax下添加参数 tradiction :true dict 若要序列化的话,需要使用 JSON.stringfy("{"one": 123}"), 这样的形式进行转化,在后台中就需要对获取到的字符串进行 反序列化(取出其对象) 原文地址:https://www.cnblo

jQuery ajax传递特殊字符参数(例如+)

使用jQuery ajax向后台传递参数para=1+1时后台接收到的参数为para=1 1,解决方案是 使用json传递,代码如下. var url = "/test/check"; $.ajax({ type: "post", url: url, // data: "para=1+1", data为字符串时 后台接收到的参数为 1 1 data: {"para":1+1}, // data为json数据时 后台接收到的参数

Jquery ajax传递复杂参数给WebService

参考: http://www.cnblogs.com/kingge/archive/2011/08/04/2127642.html http://www.cnblogs.com/micromouse/archive/2010/08/14/1799464.html using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serializati

ajax 传递数组参数

示例 var req = { ids: [1, 2, 3] } $.ajax({ url: '/.../delete-by-ids', type: 'post', data: JSON.stringify(req), dataType: 'json', contentType: "application/json", traditional:true, success: function (data) { callback(data); }, error: function (data

ajax传递给后台数组参数方式

在项目上用到了批量删除与批量更改状态,前台使用了EasyUI的DataGrid,用到了批量更改数据状态功能. 在前台可以获取每条数据的ID,但是如何通过数组方式传递给后台? 通过昨晚的各种方式的调试,终于得出了答案! 在此作为备忘. 目前有两种方式可行: 方式一 前台代码: [javascript] view plaincopy // 方式一 var _list = {}; for (var i = 0; i < checkedRow.length; i++) { _list["selec

jquery的ajax传递参数两种方式

<script type="text/javascript" src="js/jquery-1.7.js"></script> <script type="text/javascript"> $(function(){ $("#button").click(function(){ $.ajax({ url:'myServlet', type:'post', dataType:'json',

ajax传递参数给springmvc总结[转]

通过ajax传递参数给springmvc,经常会因为 参数类型太复杂,或者根本不知道springmvc都支持哪些类型转换,导致后台接收出现各种问题.如果书写格式没有问题仍然接受参数报错,大部分是因为springmvc默认无法支持该种格式的json转换导致的 现在一句话解决,就是用@RequestBody注解接收 下面看一些传参的例子,基本涵盖了大部分的参数传递类型 案例1:简单数组 idList[] ajax $("#test1").on("click",funct

ASP.NET jquery ajax传递参数

第一种:GET传递 前台 ajax   GET 传递 :即在请求的地址后面加上参数,URL地址长度有显示,安全性低 后台接收:Request.QueryString[“参数名字”]! 例如: function LoadBar(id) { var project = id; var month = $("#txtMonth").val(); $.ajax({ type: "GET", async: false, url: 'GetProjectScore.aspx?p

ajax请求中传递的参数中如果含有特殊字符怎么处理?

在JQUERY AJAX开发中遇到了下面的一个问题,在执行AJAX请求的时候,需要传递一个“50%”的参数,而这个参数中含有特殊字符%.这样的话就会出现问题了,我们知道服务器在发送请求的时候,会将url中的参数转化成类似于“%2C%2F%3F%3A%40%26%3D%2B%24%23”,所以在我们执行含有这样特殊字符的ajax请求的时候就会出现错误,因为我们传递的参数可能发生了变化,也可能由于参数本身中就含有特殊字符所以系统没有办法编译它. 可能会抛出这样的一个异常: 警告: Parameter