這次帶給大家js結合json實現ajax的實戰案例,js結合json實現ajax的注意事項有哪些,下面就是實戰案例,一起來看一下。
前期準備
1、安裝wampserver或其他類似軟體來建立本機整合安裝環境,我安裝的是phpstudy
2、html、js、css等檔案需要放置在PHPstudy中的WWW目錄中,預設運行index頁
3、bootstrap.css
介面截圖:
phpstudy用起來很方便,如果你的電腦沒有安裝過php,那要先配置系統環境變量,將php.exe(在PHPstudy的安裝目錄裡找)的路徑加入進去,然後在cmd裡輸入php -v ,出現php的安裝版本等資訊則說明安裝成功。
然後新建一個專案在PHPstudy的WWW資料夾下,這裡我取名為AjaxDemo。
index.html
nbsp;html> <meta> <title>index</title> <link> <style> .container{ width: 50%; margin-top: 30px; } .text-danger{ margin-top: 6px; } </style> <p> </p><p> </p><p> </p><p>员工查询</p> <p> </p><p> </p><p> <label>员工编号:</label> </p><p> <input> </p> <p> <button>查询</button> </p> <p> <label>查询结果:</label> </p><p></p> <p> </p><p> </p><p> </p><p>员工增加</p> <p> </p><p> </p><p> <label>员工编号:</label> </p><p> <input> </p> <p> <label>员工姓名:</label> </p><p> <input> </p> <p> <label>员工性别:</label> </p><p> <input> </p> <p> <label>员工职位:</label> </p><p> <input> </p> <p> </p><p> <button>增加员工</button> </p> <p> <label>结果:</label> </p><p></p> <script></script>
staffManage.js
#實例化Ajax可分為五點,比較好記:
#1、new一個XMLHttpRequest實例注意相容低版本的IE瀏覽器
var xhr; if (window.XMLHttpRequest) { xhr= new XMLHttpRequest(); } else { xhr= new ActiveXObject(‘Microsoft.XMLHTTP'); }
##2、open(method ,url,asyn) XMLHttpRequest物件的open()方法有3個參數,第一個參數指定是GET還是POST,第二個參數指定URL位址,第三個參數指定是否使用非同步,預設是true,所以不用寫。
3*若是post請求還要加上請求頭setRequestHeader(”Content-Type”,”application/x-www-form-urlencoded”)4 、send 呼叫send()方法才真正發送請求。 GET請求不需要參數,POST請求需要把body部分以字串或FormData物件傳進去。
5、onReadyStateChange
6、responseText
// 查询员工方法 var oKeyword=document.getElementById('keyword'), //员工编号 oSearchBtn=document.getElementById('search'), //查询按钮 oSearchRes=document.getElementById('searchResult'); //反馈结果显示 // 查询员工按钮点击事件 oSearchBtn.onclick=function(){ searchStaff(); } // 创建查询员工方法 function searchStaff(){ //var xhr=new XMLHttpRequest(); //标准写法和IE写法混在一起,可以兼容低版本的IE浏览器 var xhr; if (window.XMLHttpRequest) { xhr= new XMLHttpRequest(); } else { xhr= new ActiveXObject('Microsoft.XMLHTTP'); } xhr.open('GET','serverjson.php?number='+oKeyword.value); xhr.send(); //当创建了XMLHttpRequest对象后,要先设置onreadystatechange的回调函数。在回调函数中,通常我们只需通过readyState === 4判断请求是否完成,如果已完成,再根据status === 200判断是否是一个成功的响应。 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if(xhr.status=200){ var data=JSON.parse(xhr.responseText); //json解析方法JSON.parse 或者 eval('('+xhr.responseText+')') oSearchRes.innerHTML=data.msg; } } } } // 增加员工 var oAddnumber=document.getElementById('add-number'), //员工编号 oAddname=document.getElementById('add-name'), //员工姓名 oAddsex=document.getElementById('add-sex'), //员工性别 oAddjob=document.getElementById('add-job'), //员工职位 oAddSearch=document.getElementById('add-search'), //增加员工按钮 oAddResult=document.getElementById('add-resultshow'); //反馈结果显示 // 增加员工按钮点击事件 oAddSearch.onclick=function(){ createStaff(); } // 创建增加员工方法 function createStaff(){ var xhr; if(xhr.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject('Microsoft.XMLHTTP'); } xhr.open('POST','serverjson.php'); //这里注意key=value的等于号两边不要出现空格,会出现错误 var data='name='+oAddname.value +'&number='+oAddnumber.value +'&sex='+oAddsex.value +'&job='+oAddjob.value; //在open和send之间设置Content-Type xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(data); xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if(xhr.status=200){ var data=JSON.parse(xhr.responseText); if(data.success){ oAddResult.innerHTML=data.msg; }else{ oAddResult.innerHTML='出现错误:'+data.msg; } }else{ alert('发生错误!'+xhr.status) } } } }serverjson .php
<?php //设置页面内容是html编码格式是utf-8 header("Content-Type: text/plain;charset=utf-8"); //header("Content-Type: application/json;charset=utf-8"); //header("Content-Type: text/xml;charset=utf-8"); //header("Content-Type: text/html;charset=utf-8"); //header("Content-Type: application/javascript;charset=utf-8"); //定义一个多维数组,包含员工的信息,每条员工信息为一个数组 $staff = array ( array("name" => "洪七", "number" => "101", "sex" => "男", "job" => "总经理"), array("name" => "郭靖", "number" => "102", "sex" => "男", "job" => "开发工程师"), array("name" => "黄蓉", "number" => "103", "sex" => "女", "job" => "产品经理") ); //判断如果是get请求,则进行搜索;如果是POST请求,则进行新建 //$_SERVER是一个超全局变量,在一个脚本的全部作用域中都可用,不用使用global关键字 //$_SERVER["REQUEST_METHOD"]返回访问页面使用的请求方法 if ($_SERVER["REQUEST_METHOD"] == "GET") { search(); } elseif ($_SERVER["REQUEST_METHOD"] == "POST"){ create(); } //通过员工编号搜索员工 function search(){ //检查是否有员工编号的参数 //isset检测变量是否设置;empty判断值为否为空 //超全局变量 $_GET 和 $_POST 用于收集表单数据 if (!isset($_GET["number"]) || empty($_GET["number"])) { echo '{"success":false,"msg":"参数错误"}'; return; } //函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。 //global 关键词用于访问函数内的全局变量 global $staff; //获取number参数 $number = $_GET["number"]; $result = '{"success":false,"msg":"没有找到员工。"}'; //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果 foreach ($staff as $value) { if ($value["number"] == $number) { $result = '{"success":true,"msg":"找到员工:员工编号:' . $value["number"] . ',员工姓名:' . $value["name"] . ',员工性别:' . $value["sex"] . ',员工职位:' . $value["job"] . '"}'; break; } } echo $result; } //创建员工 function create(){ //判断信息是否填写完全 if (!isset($_POST["name"]) || empty($_POST["name"]) || !isset($_POST["number"]) || empty($_POST["number"]) || !isset($_POST["sex"]) || empty($_POST["sex"]) || !isset($_POST["job"]) || empty($_POST["job"])) { echo '{"success":false,"msg":"参数错误,员工信息填写不全"}'; return; } //TODO: 获取POST表单数据并保存到数据库 //提示保存成功 echo '{"success":true,"msg":"员工:' . $_POST["name"] . ' 信息保存成功!"}'; } ?>
總結
整個過程大概如圖:##相信看了這篇文章案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
怎麼設定Google瀏覽器支援file協定的AJAX請求AJAX在不刷新的情況下檢測輸入的使用者名稱以上是js結合json實作ajax的實戰案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具