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;
};