js原生態寫法
代碼如下 |
複製代碼 |
var mm; var nn; function makeRequest(url,obj,b) { mm=obj; nn=b; http_request = false; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType){ http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { try{ http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } if (!http_request) { alert("您的瀏覽器不支援當前操作,請使用 IE 5.0 以上版本!"); return false; } //定義頁面調用的方法init,不是init();沒有(); http_request.onreadystatechange = init; http_request.open('GET', url, true); //禁止IE緩衝 http_request.setRequestHeader("If-Modified-Since","0"); //發送資料 http_request.send(null); //每60秒重新整理一次頁面 //setTimeout("makeRequest('"+url+"')", 1000); } function init() { if (http_request.readyState == 4) { if (http_request.status == 0 || http_request.status == 200) { var result = http_request.responseText; if(result==""){ result = "擷取失敗"; } var z=result.split("#"); if(z[0]=="bnm") { alert(z[1]); window.location.reload(); } else if(z[0]=="nm") { } else { document.getElementById ("pinpai"+mm).value=z[0]; //document.getElementById ("pp"+mm).value=z[1]; document.getElementById ("lsj"+mm).value=z[2]; document.getElementById ("lxk"+mm).value=z[3]; document.getElementById ("lb"+mm).innerHTML=z[4]; } } else {//http_request.status != 200 alert("請求失敗!"); } } } |
jquery+ajax/" target="_blank">jquery ajax
使用load方式來進行非同步請求
代碼如下 |
複製代碼 |
$(".ajax.load").load("/xxx.php", function (responseText, textStatus, XMLHttpRequest){ this;//在這裡this指向的是當前的DOM對象,即 $(".ajax.load")[0] //alert(responseText);//請求返回的內容 //alert(textStatus);//請求狀態:success,error //alert(XMLHttpRequest);//XMLHttpRequest對象 }); |
使用POST方式來進行非同步請求
Ajax.aspx:
代碼如下 |
複製代碼 |
Response.ContentType = "application/json"; Response.Write("{result: '" + Request["Name"] + ",你好!(這訊息來自伺服器)'}");jQuery 代碼: $.post("Ajax.aspx", { Action: "post", Name: "lulu" }, function (data, textStatus){ // data 可以是 xmlDoc, jsonObj, html, text, 等等. //this; // 這個Ajax請求的選項配置資訊,請參考jQuery.get()說到的this alert(data.result); }, "json"); |
jQuery Ajax 事件
局部事件就是在每次的Ajax請求時在方法內定義的,例如:
代碼如下 |
複製代碼 |
$.ajax({ beforeSend: function(){ // Handle the beforeSend event }, complete: function(){ // Handle the complete event } // ... }); |
全域事件是每次的Ajax請求都會觸發的,它會向DOM中的所有元素廣播,在上面 getScript() 樣本中載入的指令碼就是全域Ajax事件。全域事件可以如下定義:
代碼如下 |
複製代碼 |
$("#loading").bind("ajaxSend", function(){ $(this).show(); }).bind("ajaxComplete", function(){ $(this).hide(); }); |
或者:
代碼如下 |
複製代碼 |
$("#loading").ajaxStart(function(){ $(this).show(); }); 我們可以在特定的請求將全域事件禁用,只要設定下 global 選項就可以了: $.ajax({ url: "test.html", global: false,// 禁用全域Ajax事件. // ... }); |