使用 jQuery Serialize Post 資料
之前遇到一點小問題,用ajax Post一些資料到其他頁面處理,
如果是一般性的資料沒有問題,但有一些特殊符號卻發生了一些問題 EX: HTML 標簽,\r,\s之類的
頁面是使用CKEditor 來處理,HTML如下
<div id="popwindows" style="display:none;" align="center">
<form id="formPost" name="formPost" method="POST">
<div class="Title" align="left">
Content:
</div>
<div style ="margin-top:20px;">
<textarea name="txtdescription" id="txtdescription" rows="20" style="width:800px; height:300px;" >
</textarea>
</div>
<div style ="margin-top:20px;">
<input id="btnSubmit" type="button" value="Submit" class="W120" />
<input id="btnCancel" type="button" value="Cancel" class="W120" />
</div>
<input id="hidDescription" name="description" type="hidden" />
<input id="hidstatus" name="review" type="hidden" />
<input id="hidUserid" name="uid" type="hidden" />
<input name="act" type="hidden" value="postreview" />
</form>
</div>
[jQuery]
function updateReview(id, status, wo, userid, description) {
var updateStatus;
$.ajax({
type: "POST",
url: ""update.aspx,
data: "act=edit&id=" + id + "&review=" + status + "&uid=" + userid + "&description=" + description,
timeout: 15000,
success: function(data) {
if (data==1) {
updateStatus = "Update Success";
}
else {
updateStatus = "Update Fail";
}
},
complete: function() {
alert(updateStatus);
}
});
}
這會有一個問題,如下
最後帶過去的內容會沒有u can't see me ,因為被javascript截斷了
所以改用serialize,可以輕易的解決這樣的問題,而且不用像在組字串一樣,直接把整個範圍的DOM都傳過去,
function updateReview() {
$("#hidDescription").val(CKEDITOR.instances.txtdescription.getData());
var updateStatus;
$.ajax({
type: "POST",
url: "update.aspx",
data: $("#formPost").serialize(),
timeout: 15000,
success: function(data) {
if (data==1) {
updateStatus = "Update Success";
}
else {
updateStatus = "Update Fail";
}
},
complete: function() {
alert(updateStatus);
}
});
}
可以看一下Post的資料
整個form裡面的DOM都可以一次傳過去,而且特殊資料也不會被截斷,蠻好用的一個小技巧