『壹』 如何在同一個php頁面,通過ajax把值傳給PHP變數
舉個例子:你想在用戶點擊時,把 apple 這個字元串,通過前端傳給後端。
前端,用 jQuery 舉例:
$('button').click(function () {
$.ajax({
url: '/xxx',
method: 'post',
dataType: 'json',
data: {fruit: 'apple'}
}).done(function (res) {
// 成功後的回調
}).fail(function (err) {
// 失敗後的回調
});
});
後端 PHP 處理:
$fruit = $_POST['fruit']; // 獲取從 ajax 傳過來的 fruit 的值,這里是 apple。
如果你想在前端重新顯示這個字元串 apple,那麼你要用 PHP 把數據返回給頁面,然後在上面 「// 成功後的回調」 裡面,補充邏輯代碼。
例如 PHP 把 apple 返回給前端:
return json_encode(array('fruit' => 'apple'));
前端回調處理:
// 成功後的回調
alert(res.fruit); // 彈框顯示 「apple」
實際上,$_POST 能夠獲取所有從前端用 post 方式提交過來的數據,不管你是頁面刷新方式,還是 ajax(jQuery 才叫 ajax,實際上它是 XMLHttpRequest,非同步非阻塞的請求方式)
『貳』 Ajax怎麼調用後台php代碼訪問資料庫並顯示
由 JavaScript 調用的伺服器頁面,是名為 "getuser.php" 的簡單 PHP 文件。
該頁面用 PHP 編寫,並使用 MySQL 資料庫。
其中的代碼執行針對資料庫的 SQL 查詢,並以 HTML 表格返回結果:
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ajax_demo", $con);
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysql_query($sql);
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
例子解釋:
當查詢從 JavaScript 被發送到這個 PHP 頁面,會發生:
PHP 打開到達 MySQL 伺服器的連接
找到擁有指定姓名的 "user"
創建表格,插入數據,然後將其發送到 "txtHint" 佔位符
『叄』 php如何獲取jquery ajax傳遞過來的值
方法和詳細的操作步驟如下:
1、第一步,安裝並配置PHP集成環境,以phpstudy為例,見下圖,轉到下面的步驟。
『肆』 Ajax向伺服器發送請求和接收返回的信息
Ajax向伺服器發送請求
Ajax對象創建完成後,下面就要講解一下Ajax如何使用。首先詳細講解一下Ajax向伺服器發送請求所需的兩個方法,具體如下:
(1)open()方法
open()方法用於創建一個新的HTTP請求,並指定此請求的類型(如GET、POST等)、URL以及驗證信息,其聲明方式如下所示:
在上述聲明中,method用於指定請求的類型,其值可為POST、GET、PUT及PROPFIND,大小寫不敏感;URL表示請求的地址,可以為絕對地址也可以為相對地址,並且可以傳遞查詢字元串。其餘參數為可選參數,其中,asyncFlagy用於指定請求方式,同步請求為false,默認為非同步請求true;userName用於指定用戶名,password用於指定密碼。
(2)send()方法
send()方法用於發送請求到HTTP伺服器並接收回應。其聲明方式如下所示:
在上述聲明中,content用於指定要發送的數據,其值可為DOM對象的實例、輸入流或字元串,一般與POST請求類型配合使用,需要注意的是,如果請求聲明為同步,該方法將會等待請求完成或者超時才會返回,否則此方法將立即返回。
需要注意的是,在使用GET方式傳遞特殊字元或中文參數時,要使用JavaScript中的encodeURIComponent()函數將其轉換成「%十六進制數」的形式,防止在某些瀏覽器(如IE瀏覽器)中中文亂碼的問題。
Ajax接收伺服器返回的信息
了解Ajax向伺服器發送請求後,下面將對Ajax如何接收伺服器返回的信息(例如,HTML標簽、CSS樣式、字元串、XML、JSON等),進行詳細講解。具體如下:
(1)readyState屬性
readyState屬性用於返回Ajax的當前狀態,狀態值有5種形式,具體如表所示。
(2)onreadystatechange屬性
onreadystatechange事件屬性用於感知readyState屬性狀態的改變。為了大家更好的理解這兩個屬性的使用,下面創建一個伺服器端的文件index.php,用於輸出字元串,然後在瀏覽器端index.html中向伺服器端發送請求,並在控制台輸出狀態值。具體示例如下所示:
創建伺服器端文件:index.php
創建瀏覽器端文件:index.html
在瀏覽器中訪問客戶端文件,按「F12」鍵,切換到控制台,查看輸出結果,具體如下圖所示。
從圖中可以看出,通過onreadystatechange事件屬性可以清晰的感知Ajax狀態的改變,同時使用readyState獲取轉變後的狀態值。例如Ajax從0(未初始化)狀態變成1(初始化)狀態值時,Ajax此時的狀態值為1。
(3)status屬性
status屬性用於返回當前請求的HTTP狀態碼,常見的狀態碼如表所示。
值得一提的是,在感知當前Ajax對象狀態時,為了追求程序的嚴謹性,需要同時判斷當前HTTP狀態status是否等於200(請求成功)。
需要注意的是,Ajax中的statusText屬性,僅當數據發送並接收完畢後,才可以獲取當前請求的響應狀態。
(4)獲取響應信息的相關屬性
當數據接收完畢且請求伺服器的請求成功時,即可以使用Ajax中提供的相關屬性獲取伺服器的響應信息。具體的屬性及相關說明如下表所示。
在上表中,responseText屬性用於返迴文本格式的響應數據;屬性responseBody表示直接從伺服器返回並未經解碼的二進制數據;responseXML屬性用於接收XML數據格式的響應數據。