[jQuery] 使用Serialize post data

使用 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都可以一次傳過去,而且特殊資料也不會被截斷,蠻好用的一個小技巧