通過javascript的庫jquery來實現非同步擷取資料,而且資料轉送很多人已經使用輕量級級的json替代xml,那如何通過PHP+JQuery+Json非同步擷取資料實現AJAX呢?下面將列出具體的方法
| 代碼如下 |
複製代碼 |
| <select name="country" id="country" onchange="PostCountryJson();"> |
在 select 控制項裡,當觸發 onchange 事件的時候,我們執行 PostCountryJson() 這個JavaScript Function
其次是 JavaScript 代碼:
| 代碼如下 |
複製代碼 |
|
function PostCountryJson() {
var mid = $("#country").val();
var queryString = {"mid":mid}
var url = "getCountrycode.<span class="tag-span"><a class="tag" href="http://www.111cn.net" title="查看 php 中的全部文章" target="_blank">php</a></span>";
$.getJSON(url, queryString,function (json) {
$("#tel_country_code").get(0).value = json.countryCode;
});
} |
也是通過 Json 資料集擷取資料。
最後當然就是 getCountrycode.php 代碼了:
| 代碼如下 |
複製代碼 |
|
<?php
include_once '../configure/conn.php'; // 建立與mysql database 的連結
$country = $_GET['mid']; // 獲得從PostCountryJson()傳來的mid參數,就是城市名稱啦
// 執行搜尋,搜尋country表裡該程式的資料
$selectStr = "SELECT * FROM country WHERE country_name = '".$country."'";
$result = mysql_query($selectStr,$conn);
if ($result) {
$countryCode = mysql_fetch_array($result);
}
$countryCodeStr = $countryCode['country_code']; // 將 country_code 欄位的資料存放到變數
$jsonArr = array('countryCode'=>$countryCodeStr); // 按照Jason的格式寫成一個數組
$jsonStr = json_encode($jsonArr); // 編碼Jason資料,沒想到比.net還要簡單呀
echo ($jsonStr); // 輸出Jason資料
?> |
除了上面的方法還有很多jquery ajax的方法哦
1. load( url, [data], [callback] ) :載入遠程 HTML 檔案代碼並插入至 DOM 中。
url (String) : 請求的HTML頁的URL地址。
data (Map) : (選擇性參數) 發送至伺服器的 key/value 資料。
callback (Callback) : (選擇性參數) 請求完成時(不需要是success的)的回呼函數。
這個方法預設使用 GET 方式來傳遞的,如果[data]參數有傳遞資料進去,就會自動轉換為POST方式的。jQuery 1.2 中,可以指定選擇符,來篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 程式碼。文法形如 "url #some > selector"。
這個方法可以很方便的動態載入一些HTML檔案,例如表單。
範例程式碼:
| 代碼如下 |
複製代碼 |
|
$(".ajax.load").load("/2009/06/10/1500682.html .post",
function (responseText, textStatus, XMLHttpRequest){
this;//在這裡this指向的是當前的DOM對象,即$(".ajax.load")[0]
//alert(responseText);//請求返回的內容
//alert(textStatus);//請求狀態:success,error
//alert(XMLHttpRequest);//XMLHttpRequest對象
}); |
jQuery.get( url, [data], [callback] ):使用GET方式來進行非同步請求
jQuery.post( url, [data], [callback], [type] ) :使用POST方式來進行非同步請求
jQuery.getScript( url, [callback] ) : 通過 GET 方式請求載入並執行一個 JavaScript 檔案。
jQuery.ajax( options ) : 通過 HTTP 要求載入遠端資料