时间:2021-07-01 10:21:17 帮助过:4人阅读
$("#save_config_btn").click(function(){ $.ajaxSetup({ cache:false, contentType : "application/x-www-form-urlencoded; charset=utf-8" }); var fields = $("#rss_form").serializeArray(); fields = JSON.stringify(fields) //中文会乱码 $.ajax({ type: "POST", url : "edit.php", data: fields, success: function(msg){ alert(msg); } }); });
';print_r($data);?>
[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]
{"data":[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]}
1、JQuery如何把serializeArray()获取到的json对象转换为 第二种格式的json字符串 且保证中文不会乱码
保证不乱码,需要在header加入
第二种数组格式
var fields = $("#rss_form").serializeArray();
var t = {};
t['data'] = fields
fields = JSON.stringify(t);
2、或者php如何直接接收 json对象 或者 第一种格式的 json字符串
用第一种json字符串提交例子:
js test
1、ajax 本身就是以 utf-8 编码传输,所以不需要再有 charset=utf-8 声明
2、jq 的 post 方式已经发了 application/x-www-form-urlencoded 头,也不需要你再劳动了
所以
$.ajaxSetup({ cache:false, contentType : "application/x-www-form-urlencoded; charset=utf-8" });一段是不需要的。考虑的 IE 的缓存可能会影响效果,可以把 cache: false 作为 $.ajax 的参数
$.ajax({ cache: false, type: "POST",
html 端
去掉 fields = JSON.stringify(fields); 后
把 var fields = $("#rss_form").serializeArray();
改为 var fields = $("#rss_form").serialize();
把 data: {data : fields},
还原成 data: fields,
既然你是在学习 jquery 的 ajax 的使用,那么就该多做一些测试太感谢了,非常感谢两位的解答