由於希望減輕httpd server的loading,所以使用ajax 的方式來submit form的資料
一開始,本來想說要用json的格式來傳,所以下載了json2.js,不過後來發現需要重新改httpd 的cgi
所以就沒有使用json格式,不過,還是要記錄一下
1.json (http://stackoverflow.com/questions/1255948/post-data-in-json-format-with-javascript)
<script language="JavaScript" type="text/javascript" src="/json2.js"></script>
$(function() {
var frm = $j(document.userControlForm);
var dat = JSON.stringify(frm.serializeArray());
alert("I am about to POST this:\n\n" + dat);
$j.post(
frm.attr("action"),
dat,
function(data) {
alert("Response: " + data);
}
);
});
2.不使用json格式 (http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form)
// this is the id of the submit button
$("#submitButtonId").click(function(){
var url ="path/to/your/script.php";// the script where you handle the form input.
$.ajax({
type:"POST",
url: url,
data: $("#idForm").serialize(),// serializes the form's elements.
success:function(data)
{
alert(data);// show response from the php script.
}
});
returnfalse;// avoid to execute the actual submit of the form.
});
原本不太懂為什麼最後需要return false; 後來請教高手,得知是怕按鈕是<a>或是有href之類的,會影響submit的動作
所以需要加上return fase 或是改成下列的方式
e.preventDefault();
.....
});
不過,因為我的form挺簡單的,沒有href之類的,所以就拿掉了,只有下列幾行。
$j.ajax({
type: "POST",
url: "userControl.cgi",
data: $j("#userControlForm").serialize(),
success: function(data)
{
;
}
});
<form method="post" name="userControlForm" id="userControlForm" action="userControl.cgi" target="hidden_frame">
<input type="hidden" id="u_action_mode" name="action_mode" value="">
<input type="hidden" id="u_action_wait" name="action_wait" value="1">
<div id="unapprovedInput_div"></div>
<div id="approvedInput_div"></div>
<div id="blockedInput_div"></div>
</form>