由於希望減輕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 或是改成下列的方式

$("#submitButtonId").click(function(e) {
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>

arrow
arrow
    文章標籤
    ajax json
    全站熱搜

    Yisin 發表在 痞客邦 留言(1) 人氣()