AJAX - 前台传JSON到后台

【1】contentType默认为application/x-www-form-urlencoded的情况

var url = "name.action";

var jsonStr = {"name":'lwy',"age":25};//object类型

var jsonArrayFinal = JSON.stringify(jsonStr);//string类型

jQuery.ajax({

            type: "post",//put delete get post

            url: url,

            dataType : 'json',

//预期服务器返回的数据类型 xml html script json jsonp text ;

//如果不指定,则服务器根据返回数据类型自行判断

            // async:true,

            data : {mydata:jsonArrayFinal},

//要么使用 对json进行手动转译,要么使用JSON.stringify(jsonStr) 将其转换为字符串类型;

//如果不进行转译,使用【2】中的后台接收方法,那么不会报异常,但是获取不到数据

// data : {mydata:jsonStr},//报空指针异常,传不过去

            contentType:"application/x-www-form-urlencoded",//默认值

            success: function\(data,Status\){

                alert\(data\);

                alert\(Status\);

            },

            error: function\(xhr,status,errMsg\){

                alert\(errMsg\);

            }

            }\);

【2】contentType默认非application/x-www-form-urlencoded的情况

比如,contentType:"application/json;charset=utf-8",此时,若使用例子一中的后台接收方法,是接收不到数据的。具体原因请看;post请求参数data的不同形式http://blog.csdn.net/j080624/article/details/54598745

jQuery.ajax({

            type: "post",//put delete get post

            url: url,

            dataType : 'json',

//预期服务器返回的数据类型 xml html script json jsonp text

            async:true,//默认异步

            contentType:"application/json;charset=utf-8",

            data : jsonArrayFinal,

            data : {mydata:jsonArrayFinal},

            //进行了url编码mydata=%7B%22name%22%3A%22ji%22%2C%22age%22%3A20%7D

// data : jsonStr,//name=lwy&age=25

// data : {mydata:jsonStr},

            //mydata%5Bname%5D=lwy&mydata%5Bage%5D=25

            //mydata\[name\]=lwy&mydata\[age\]=25



            success: function\(data,Status\){

                alert\(data\);

                alert\(Status\);

            },

            error: function\(xhr,status,errMsg\){

                alert\(errMsg\);

            }

            }\);

results for ""

    No results matching ""