首頁 > 網際網路

js與php的互動問題

2019-12-14 00:02:11

php與js的互動問題一直是一個非常重要的問題,在很多時候都會用到,而且,使用這種技術還可以帶來更好的使用者體驗

小編今天就來講一下如何進行php與js互動

1

小編的互動方法是jQuery的$.ajax()。

所謂ajax,就是Asynchronous Javascript And XML,也就是我們常說的js與XML非同步技術

通過在後台與伺服器進行少量資料交換,ajax 可以使網頁實現非同步更新。

這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新

這樣可以給使用者更好的體驗,如果你的網頁比較大的情況下,可以先載入一部分,再載入剩下的,這樣等到使用者點選下面的東西時,已經載入好了,這樣可以大大提高你的頁面開啟速度

比如,百度圖片的顯示就是用了ajax。先載入一部分圖片,使用者往下拖網頁時,底下的圖片已經載入好了!


2

ajax的作用是在後台與伺服器進行少量的資料交換,那麼,我們就可以將js的引數傳遞給php,然後讓php運算元據庫,再返回給js值,不管是js向php傳參,還是php向js傳參,都可以通過ajax實現!

1

當然,$.ajax()方法的引數非常多,如果想要了解更深一些,自行百度。小編在這裡只講一些js與php傳參用到的引數。附幾張引數介紹圖

這個不重要,我們來看一下傳參時用的引數。




2

如圖

這就是所有用到的引數了。

js的程式碼如下:

--------------------------------------------------------------------------------

var json;   //這個變數是為了得到ajax返回的引數,如果你不需要php返回引數,那就不需要這些東西。

$.ajax({ 

    cache: false,

         async: false,   //注意:這裡設定為flase,即同步操作,因為我們不需要非同步操作,只是傳參而已,當然,你也可以設定成非同步。

contentType: "application/x-www-form-urlencoded; charset=utf-8",  

//這個要寫對,和你的頁面照應,你的頁面是gb2312就填gb2312,我這裡是utf8,否則中文傳參會出錯。

         url: "../include/Mysql.php",  //這裡填上你的php操作頁面,即接受js引數的php頁面。

         type: "POST",        //這裡和php照應,這裡填POST,php中就要用$_POST[]接受!

traditional: true,  //序列化資料

         data:{"jsdata":id},  //傳過去的引數,我傳過去一個id,接受時php這樣寫:$data=$_POST["jsdata"];     變數名稱當然可以更改。

         error: function(){       //出錯處理,一般加上,但其實傳參沒什麼出錯。

             alert('請求超時');  

         },  

         success:function (data)  //成功後的函數,注意,這裡接受php返回的引數

{

//注意!!由於傳參時會進行base64加密,所以你穿過去的引數和返回的引數都會很長,如果我們不用json的話,引數就會丟失一部分,因為傳遞有長度限制!所以我們不得不涉及到一個麻煩的東西json陣列!

var a=data;

var ss;

ss=eval("("+a+")");  //eval()可以執行字串中的js程式碼!

             ffa(ss);         //這是一個函數,用來得到傳回來的引數。

}    

     });

var ss=this.json;  //得到ajax返回的引數

function ffa(ss)  //得到當前ajax回執的data,儲存在json裡

{this.json=ss;}

--------------------------------------------------------------------------------




3

以上程式碼顯示了js-->php--->js的過程,如果你只需要js-->php--->mysql,那麼就不需要json了。

4

php頁面的程式碼如下

--------------------------------------------------------------------------------

<?php

if ($_POST['jsdata'])  //這裡的名字要和js裡寫的一樣。

{

selecta($link);   //執行函數,這個函數是自定義的。。

}

function selecta($link)

{

/* 你的運算元據庫的命令。。。。。。。。。。。。。。

         這裡有一個很重要的東西,就是你返回的資料需要放到json陣列裡           

json的寫法不在詳細介紹,樣例是一維陣列寫法。   */

$a['data']=$rows['t_name'];  //$rows['t_name']是資料庫的資料。這樣就有了一個json陣列$a,它的鍵data中有值。

echo json_encode($a);  //這句非常重要,這是php-->js的方式,如果不需要,就不用寫。

}

?>

--------------------------------------------------------------------------------


5

js獲得json陣列後,取出操作如下:var i=ss['data'];//data是php中陣列的鍵,只有對應好鍵,才能取出相應的值。json陣列雖然麻煩,但是十分強大!你還可以試試多維的json陣列儲存資料。

IT145.com E-mail:sddin#qq.com