index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Ajax json test</title> <script language="javascript" src="./jquery-1.7.1.min.js" /></script> <script language="javascript" src="./ajax_json.js" /></script> </head> <body style="font-family:Arial;line-height:150%"> <h1>Ajax利用JSON進行前後台互動</h1> <a href="javascript:getAllUsers();">擷取所有使用者資訊</a> <br/> <!-- 用於顯示返回結果 --> <div id="users"></div> </body> </html>ajax_json.js /** * jQuery 同步Ajax封裝 */ function getJson(RequestData,URL){ var reJson; $.ajax({ type:'POST', url:URL, data:RequestData, async:false, //為了簡便,設定為同步操作 cache: false, success:function(responseData){ reJson=responseData; } }); return reJson; } /** * 擷取所有使用者資訊 */ function getAllUsers(){ var url = "./service.php"; var request = 'action=get_all_users'; //從後台擷取並解析,由於上面封裝ajax採用的是同步返回, //所以這樣操作能成功擷取返回資料 var json = getJson(request,url); var users = eval('('+ json +')'); var usersHtml = '<br/><span style="color:red;">Ajax返回的JSON字串:</span><br/>' + json + '<br/><br/><span style="color:red;">解析出來的結果為:</span><br/>'; for(var i=0;i<users.length;++i){ usersHtml += 'userId = ' + users[i].userId + '<br/>' + 'userName = ' + users[i].userName + '<br/>'; } //把構造的HTML利用jQuery動態顯示到頁面 $('#users').empty().html(usersHtml); } service.php <?php //接受請求參數並根據參數選擇操作 if(isset($_POST['action'])&&$_POST['action']!=""){ switch($_POST['action']){ case 'get_all_users': getAllUsers(); break; default: } } //處理請求:以JSON格式返回所有使用者資訊 function getAllUsers(){ $users = array( array("userId"=>1,"userName"=>"Raysmond"), array("userId"=>2,"userName"=>"雷建坤"), array("userId"=>3,"userName"=>"Rita") ); echo json_encode($users); } ?> |