honeyth 2014-03-31
jquery跨域异步提交的时候,由于安全限制,会无法提交,可以使用jsonp的格式提交。
var params = $("#" + form_id).serialize(); // form序列化,转化后形成a=a1&b=b1这样的形式 params = decodeURIComponent(params, true); // 解码序列化 params = encodeURI(encodeURI(params)); // 再编码,到后台用 pa = java.net.URLDecoder.decode(pa , "UTF-8");这样便可以解决乱码问题 $.getJSON($("#" + form_id).attr("action") + '?callback=?', params, function (result) { if (result.textStatus == "success" && result.isSuccess == "true") { alert("提交成功!"); window.location.reload(); } else { alert(result.msg); } });
其他使用技巧:
serializeArray()方法
格式:var jsonData = $("#formID").serializeArray();
功能:将页面表单序列化成一个JSON结构的对象。注意不是JSON字符串。
比如,[{"name":"lihui"},{...}] 获取数据为 jsonData[0].name
$.param()方法,可以把json格式数据序列化成字符串形式
varobj={a:1,b:2}
vars=$.param(obj);
会形成a=1&b=2的形式
自定义方法:
$.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };