首頁 >後端開發 >php教程 >javascript - 本機ajax請求能否像php伺服器一樣,根據參數傳回對應的資料? ?

javascript - 本機ajax請求能否像php伺服器一樣,根據參數傳回對應的資料? ?

WBOY
WBOY原創
2016-12-01 01:27:541170瀏覽

本地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 進行處理後反饋回數據的好,而不是直接請求不經處理的原始文本數據

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn