現在,我們要改用jQuery來實現;在用過jQuery之後,會發現在AJAX的運作上,它比JavaScript更為簡潔有力。
再來,既然要呈現,就要搭配一個Web Server,所以我要用的是Embedded Linux上常用的一款網頁伺服器─boa
可以直接看前後端的程式碼:jQueryAjax_boa.html
<!DOCUMENT HTML PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN" "http://www.w3.prg/TR/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQueryAjax.html</title>
<script type="text/javascript" src="./jquery-1.8.3.min.js"></script>
<script language="JavaScript" type="text/javascript">
var g_strUri = function() {
var strTemp = window.location.protocol + "//" + window.location.host;
if (window.location.port)
strTemp += ":" + window.location.port;
return strTemp;
};
</script>
</head>
<body>
<center>
<form action="" method="" id="jQueryAjax">
<h2>Hello, AJAX!!</h2><hr width="30%">
<table width="30%" border="0">
<tr>
<td align="right">Username:</td>
<td align="left">
<input type="text" name="nmUsername">
</td>
</tr>
<tr>
<td align="right">Password:</td>
<td align="left">
<input type="password" name="nmPassword">
</td>
</tr>
<tr><td colspan="2">
<center><br/>
<input type="button" value="POST" id="AjaxTest"/>
</center>
</td></tr>
</table>
<center><br/>
<div id="ajax-ServerBack"></div>
</center>
</form>
</center>
</body>
<script language="JavaScript" type="text/javascript">
(function($) {
$(window.document).ready(function() {
$("#AjaxTest").click(function() {
$.ajax({
url: g_strUri() + "/boafrm/formAjaxTesting",
type: "POST",
data: $("#jQueryAjax").serialize(),
dataType: "text",
cache: true,
//context: ,
timeout: 10000,
global: true,
contentType: "application/x-www-form-urlencoded",
success: function(msg) {
document.getElementById("ajax-ServerBack").innerHTML = msg;
return true;
},
error: function(xhr, ajaxOptions, thrownError) {
/*alert("xhr.status: " + xhr.status + "\n" +
"ajaxOptions: " + ajaxOptions + "\n" +
"thrownError: " + thrownError + "\n");
*/alert(" An error has occured making the request");
return false;
},
/*
complete: function(xhr, status) {
//alert("The XMLHTTPRequest Send Complete!! ");
return;
},
beforeSend: function(xhr) {
alert("The XMLHTTPRequest will be Send!! ");
return;
},
*/
async: true,
processData: true,
//dataFilter: function() { return; },
ifModified: false,
//jsonp: ,
//username: "admin",
//password: "admin",
scriptCharset: "utf-8",
//xhr: function() { return; },
traditional: true
});
return;
});
return;
});
})(jQuery);
</script>
</html>
應該不會很難懂吧!! 像有一些暫時用不太到,或是自己還不清楚該怎麼用的,就先暫時把它們註解掉;講一個簡單一點的,data: $("#jQueryAjax").serialize(), 就是把id為jQueryAjax的Form表單資料序列化,這裡的序列化,就是把表單的資料直接變成:nmUsername=PabloPicasso.G&nmPassword=0123456789。這比JavaScript用字串來串接方便多了!!假如不是很清楚$.ajax()的一些參數設定,這個網站─jQuery ajax - ajax() 方法有非常詳細地介紹,可以參考一下!!
最後,再附上boa Server端的程式碼:/ boa / src / fmajax.c
void formAjaxTesting(request *wp, char *path, char *query)
{
char *strVal = NULL;
strVal = req_get_cstream_var(wp, ("nmUsername"), "");
printf("0. %s (%d): %s \n", __FUNCTION__, __LINE__, strVal);
strVal = req_get_cstream_var(wp, ("nmPassword"), "");
printf("1. %s (%d): %s \n", __FUNCTION__, __LINE__, strVal);
strVal = req_get_cstream_var(wp, ("submit-url"), "");
printf("2. %s (%d): %s \n", __FUNCTION__, __LINE__, strVal);
req_format_write(wp, ("Hello!! AJAX by jQuery!! "), "");
return;
}
printf()是用來在RS-232下Debug用的,可以確認自己所輸入的資料,有確實地跑到後端。
沒有留言:
張貼留言