PHP AJAX 讀資料庫 抓變數 (非常新手...)

我有許多問題想請問一下各位大大..

1.

正常來講應該是要用, PHP 讀資料庫撈資料後,在傳到 AJAX 處理

還是說用 AJAX 讀資料庫撈資料後,就直接在 JavaScript 處理了呢?

如果是後面..那 PHP還 要做啥呢..這樣不就都交給前端就好了呢?!

2.

AJAX 的 url 應該是放只有資料的網頁,還是說可以放原本 index.php 的網頁呢..?!

AJAX 的 data 是資料嗎..? 我放了 PHP 的變數,可是讀得全部都是 HTML 所有程式碼,到底要怎麼取得變數或使用 PHP 的 function 呢...?

3.

現在我想要的是,讀資料庫撈資料後,由Jquery的mousedown事件,讓html的table表格的內容顯示資料,我應該怎麼做呢...?

4.

原本我是這樣,假設用 $abc 來存PHP讀資料庫撈的資料後,由AJAX取得PHP的變數,在用Jquery新增內容至Table,請問我這樣的想法對嗎...?!

JS 檔大概內容:

$.ajax({

url: 'index.php',

data: {$jsonarray},

datatype: 'json',

success: function(data){

console.log(data);

}

});

PHP 檔大概內容:

$data = new player($db);

$player = $data->getData();

$playerdata = array(

'p1' => array($player['rows'][0]['player_team'], $player['rows'][0]['player_name']),

'p2' => array($player['rows'][1]['player_team'], $player['rows'][1]['player_name']),

'p3' => array($player['rows'][2]['player_team'], $player['rows'][2]['player_name'])

);

$tempjson = json_encode($playerdata);

$jsonarray = json_decode($tempjson);

var_dump($jsonarray);

P.S.我真的網路爬文爬很久了..我真的不會AJAX...拜託神人救救我吧....

已更新項目:

Sam大 您好

先在此感謝您熱心的回答!

JSON 我大概知道是資料交換的格式

我都會用,http://jsonlint.com/%EF%BC%8C%E9%80%99%E7%B6%B2%E9... JSON 格式是否有誤

我想詢問,通常一個 json.php 的網頁是只有 json 的資料還是有包含 html 那些呢..?

如果檔案是這樣:

index.php 已經有一個陣列,並轉成 json 格式:

$tempjson = json_encode($playerdata);

2 個已更新項目:

js / index.js:

$.ajax({

url: 'index.php',

success: function(data){

console.log(data);

}

});

這樣會印出所有的東西,包含 html

$.ajax({

url: 'index.php',

data: 'tempjson',

datatype: 'json',

success: function(data){

console.log(data.tempjson);

}

});

這樣沒東西,我是弄錯了嗎..?

3 個已更新項目:

我想再問一下..

1.

ajax 是一種前後端的溝通橋樑,這樣講對嗎?

2.

ajax 可以取得 PHP 的變數 以及 回傳 js 的資料給 PHP,這樣講對嗎?

4 個已更新項目:

再次感謝 Sam大 ..

您說 ajax無法取得php的變數 ..?!

所以我抓到的資料就一定是 "整個網頁" 嗎?!

5 個已更新項目:

非常感謝 Sam大 ..

似乎有些得進展了..!

我 js 這樣寫:

$.ajax({

url: 'json/json.php',

data: '123',

datatype: 'json',

type: 'GET',

success: function(data){

alert(data);

}

});

json.php:

6 個已更新項目:

json.php:

7 個已更新項目:

json.php:

echo json_encode($_GET);

這樣會得到 {"123":""} ,我知道這是 JSON 格式的資料

所以意思是 ajax 只能傳資料給 PHP 是這樣嗎..? 資料就是 data: 所指定的 ..?

那為甚麼 json/json.php 還要寫那語法呢..? 我砍掉那語法就沒有資料了,可是 他傳資料一樣在 index.php 顯示,這樣有..傳嗎...?

8 個已更新項目:

您的 範例 我都有測試過! 並都有顯示出 bill taipei 等資料!

但我不是很懂您說得,「如果你是使用get,其實沒有下data的必要性。」

沒有 data 不就沒有資料了嗎..? 還是我誤會 get 、 post 差別了嗎...?

兩個應該都是 傳資料的類型 ,get 不具隱密性, post 具有隱密性,這樣應該沒錯吧..?

可是資料都是打在 data 裡面, 而您說 ajax 無法取得 php 的變數,那這樣我 php 撈資料後卻無法放入 data,這就得另外找方法了對嗎..?!

9 個已更新項目:

Sam大 我在這邊非常感謝您..! 您解除我許多困惑..!

我可以在這邊或用 email 洽詢您的 FB 或 SK 之類可即時通訊的聯絡方式嗎..?

我滿希望能搞懂這些 PHP JS 等網頁語言方法..!

以及在您不麻煩的情況下..希望能多詢問您這類的問題..!

還是說只能在 知識+ 的話也沒關係,非常謝謝您..!

10 個已更新項目:

Sam大 您的知識+ 沒有開接受網友來信的樣子,我剛已經開了,看是否可以傳送!

11 個已更新項目:

Sam大 及 XiDeww大

我起初的想法是,已經從 PHP 撈資料出來 存於某變數,接著聽說可以用 ajax 去讀 PHP變數,在由 JavaScript 去使用此筆資料,但似乎這樣不可行(?

藉由 Sam大 的講解以及網路爬文後,雖然已經有點了解,但卻一直無法..

我現在將 json.php 寫成讀資料庫的程式碼,請問我這方向對嗎..? 還是我應該是撈出資料後,在想辦法丟到 json.php 呢..?

2 個解答

評分
  • Sam
    Lv 6
    6 年前
    最佳解答

    AJAX叫做非同步資料交換

    他需由js開始去從前端對後端(php),後端的php再去跟資料庫請求資料。(不一定是php,任何語言基本上只要能抓資料庫也能夠取得http請求都行)

    php取得資料後是使用「顯示」資料的方式產生資料型態的畫面。然後前端的js就會得到一個回應並取得資料,最後再從前端將資料重新處理到畫面上。

    url表示的是你要取得資料的php的位置。

    這當中你沒有提到的東西叫做json。

    我會希望你先去瞭解json這個格式,基本上他已經是一個網路交換資料的常用格式了。你可以去google "json"這個關鍵字。有很多詳細的說明。

    最主要的是,你傳出去的post請求資料會是json的格式。

    同樣的,在php端你也需要把資料轉成json字串格式然後傳回來。

    這樣js才能夠直接做處理。如果不這樣做倒不是不能處理。

    只是事情會變得很麻煩。

    一個簡單的ajax實現:(以你用jquery來說)

    前端:

    $.post(''get_data.php",{

    'name':'bill',

    },function(data){

    alert(data.name);

    },'json');

    後端:

    檔名:get_data.php

    echo json_encode($_POST);

    這就是一個簡單的request和response

    你可以看alert()出來的是不是顯示bill

    如果你能理解這樣一進一出。

    那抓資料再顯示對你來說應該就很簡單了。

    2015-01-13 15:48:29 補充:

    1.說做為溝通橋梁不如說就是一個請求事件去對應一個回應事件。

    js請求,php回應。

    2.ajax無法取得php的變數。

    你只能在php僅可能的展示資料本身。

    資料格式是各式各樣的,他可以是純文字、html code、xml格式、json格式

    基本不太建議傳回html code,耗資源。

    通常就像我前面說的,php將資料轉換成json後echo出來讓js端能看到資料回應。

    2015-01-13 15:51:45 補充:

    另外,console.log(data)

    這行的東西你只有在偵錯模式中才會看到log的內容

    請改用alert(data)或是document.write(data)

    2015-01-13 17:03:50 補充:

    既然你是要取回資料來更新頁面。

    你的資料應該是另外一個php來處理。

    而不是去撈index.php

    2015-01-13 17:03:57 補充:

    既然你要抓取的是其他的資料。

    當然是獨立寫一個取資料的php,而不是去抓index.php

    2015-01-13 17:06:13 補充:

    知識家有點怪怪的,明明回應了當時沒產生的資料要等好久才更新。

    2015-01-13 21:26:02 補充:

    如果你是使用get,其實沒有下data的必要性。

    如果你是使用post,data仍然要使用json格式。

    我上面的$.post範例你有嘗試嗎?那是jquery簡化的ajax的寫法。

    格式是這樣:

    $post( url , data , response callback ,dataType);

    data來說,如果你是寫{'name':'bill','address':taipei'}

    php端則是用$_POST['name']和$_POST['address']來接

    2015-01-14 01:10:48 補充:

    你點我的知識檔案直接寄信給我吧!(本來我要寄給你但你關閉知識檔案了)

    我記得知識家是不能直接留連絡方式的。

    (貌似個資問題)

    另外get是把資料附掛在網址後面。(index.php?name=bill&address=taipei)

    post則是跟隨著html的header去傳送。(通常是使用表單)

    而且兩者的資料量差很大。

    就比較安全性和資料量而言,使用post是較好的做法。

    2015-01-14 01:12:55 補充:

    最後說一下jquery的ajax的get的用法:

    $.get( url , response callback );

    如果要get資料,資料通常是附掛在url。(不安全)

    所以其實get通常是用來做不需要送出條件來取回資料的做法。

    2015-01-14 22:24:09 補充:

    我已經有寄信給你不知道有沒看到。

    2015-01-14 23:40:03 補充:

    你再看一下我的知識檔案吧!

    我把line和skype打在那

  • XiDeww
    Lv 4
    6 年前

    如果你現在是PHP新手,還不想碰Javascript或JQuery,那麼建議你去用xajax模組,但使用這個你還是要懂得PHP物件導向用法,另外xajax用法可以上網找,或看書籍,我以前買的書就是用xajax,但是太難用了...,所以我還是學JQuery,JQuery較xajax簡單明瞭。

    另外你似乎對ajax概念沒有很清楚,先弄清楚,搞清楚概念再來寫。

還有問題?馬上發問,尋求解答。