本地ajax請求能否像php伺服器一樣,根據參數傳回對應的資料?
我現在知道網頁透過ajax請求能得到php中的數據,而且可以透過同一個位址,傳遞不同的data參數來獲得不同的數據,但是如果是取得本地的json檔案能否達到同樣的效果呢?
本地ajax請求能否像php伺服器一樣,根據參數傳回對應的資料?
我現在知道網頁透過ajax請求能得到php中的數據,而且可以透過同一個位址,傳遞不同的data參數來獲得不同的數據,但是如果是取得本地的json檔案能否達到同樣的效果呢?
不行,本地只能根據URL的不同來區分資源。
回傳不同的數據,這個是需要伺服器處理的,本地沒有環境無法實現。其實可以試試用node搭個簡單的環境
問題描述的不夠清楚,你說的獲取本地json檔案是指:xhr.open('post' , url , true)
這邊的url
不是類似:php/test.php
這樣的伺服器腳本而是test.json
這樣的? ?
若是不透過php這樣的伺服器腳本來調度資料的話,直接請求檔案內容也是可以的。
例如:
這裡有三個 json 檔: test.json , test1.json ,test2.json
<code>js: var path = 'test.json'; // 只要更换:test1.json || test2.json 就可以切换成不同的内容 xhr.open('post' , path , true); // xhr.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded'); xhr.send(); xhr.onreadystatechange = function(){ if (this.readyState === 4 && this.status === 200) { console.log(this.responseText); // 可以查看到 test.json 中的数据 } }</code>
若是換成 php 的也是一樣的效果:
<code>js: var sendData = 'require=test'; // 只要更换参数: require test1 || require = test2 就可切换不同内容 xhr.open('post' , 'test.php', true); xhr.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded'); xhr.send(sendData); xhr.onreadystatechange = function(){ if (this.readyState === 4 && this.status === 200) { console.log(this.responseText); // 可以查看到 test.json 中的数据 } } test.php: $require = $_POST['require']; switch ($require) { case 'test': require 'test.json'; exit; case 'test1': require 'test1.json'; exit; ..... }</code>
綜上,個人覺得 php 增加了處理的功能,所以建議還是xhr發送相關參數到 php 進行處理後反饋回數據的好,而不是直接請求不經處理的原始文本數據