針對上一篇JQuery學習中使用JQuery和Prototype整合使JQuery的tab實現局部資料,使用Prototype的Ajax中方法,現在使用JQuery實現同樣的功能,如下:
jquery.js:http://dl.javaeye.com/topics/download/f961ee8e-24fb-32b5-830a-b18e471e42f9
jQuery真是個非常強大的類庫,今天學習了一下,愛上了,講下jQuery中ajax使用方法.
例子:
test.html
頁面引用<script type="text/javascript" src="jquery.js"></script>
內容有:
<div id="my400800">Hello World!</div>
用法1:(頁面載入時讀取遠程頁面內容到divMsg)
$("#my400800").load(http://www.my400800.cn, { "resultType": "html" });
傳回型別resultType有如下幾種:
"xml", "html", "script", "json", "jsonp", "text"
用法2:(點擊post資料返回資料)
<input type="button" id="bnajax" value="ajax" onclick="ajaxTest()" />
<script type="text/javascript" >
function ajaxTest()
{
$.post("http://www.my400800.cn", { "searchKey": "400電話" },function(data)
{
$("#my400800").html(data);
}
);
}
</script>
下面是摘自網路的函數:
post方法如下:
function test(access_url, tipE){
$.post(access_url,{
first: "test1", second: "test2"
}, function(data){
if(data.success){
$('#' + tipE).html('處理成功');
}else{
$('#' + tipE).html(data.msg);
}
},'json'
)
}
如果想用get方法,則把post換為get就可以了,挺簡單!
這個函數中data值為服務端返回的值,且為JSON格式,當然了,這裡可以用其他類型,如text,xml等等之類。
服務端傳回值是JSON格式,如:{success:true, msg:"測試成功"}
AJAX亂碼問題
產生亂碼的原因:
1、xtmlhttp 返回的資料預設的字元編碼是utf-8,如果用戶端頁面是gb2312或者其它編碼資料就會產生亂碼
2、post方法提交資料預設的字元編碼是utf-8,如果伺服器端是gb2312或其他編碼資料就會產生亂碼
解決辦法有:
1、若用戶端是gb2312編碼,則在伺服器指定輸出資料流編碼
2、伺服器端和用戶端都使用utf-8編碼
gb2312:header('Content-Type:text/html;charset=GB2312');
utf8:header('Content-Type:text/html;charset=utf-8');
注意:如果你已經按上面的方法做了,還是返回亂碼的話,檢查你的方式是否為get,對於get請求(或凡涉及到url傳遞參數的),被傳遞的參數
都要先經 encodeURIComponent方法處理.如果沒有用encodeURIComponent處理的話,也會產生亂碼.