jQuery Ajax GET 和 POST 請求

在本教程中,你將學習如何使用 jQuery 通過 HTTP GET 或 POST 方法通過 Ajax 從 Web 伺服器傳送和接收資料。

jQuery $.get()$.post() 方法

jQuery $.get()$.post() 方法提供了從 Web 伺服器非同步傳送和檢索資料的簡單工具。這兩種方法幾乎完全相同,除了一個主要區別 - $.get() 使用 HTTP GET 方法生成Ajax 請求,而 $.post() 使用 HTTP POST 方法生成 Ajax 請求。

這些方法的基本語法如下:

$.get(URL, data, success);   Or   $.post(URL, data, success); 

上述語法中的引數具有以下含義:

  • 必需的 URL 引數指定傳送請求的 URL。
  • 可選的 data 引數指定一組查詢字串(即鍵/值對),它與請求一起傳送到 Web 伺服器。
  • 可選的 success 引數基本上是一個回撥函式,如果請求成功則執行該函式。它通常用於檢索返回的資料。

注意: HTTP GET 和 POST 方法用於將請求從瀏覽器傳送到伺服器。這些方法之間的主要區別在於資料傳遞到伺服器的方式。檢視有關 GET 和 POST 方法的教程,瞭解這兩種方法的詳細說明和比較。

使用 jQuery 使用 AJAX 執行 GET 請求

以下示例使用 jQuery $.get() 方法使用 HTTP GET 方法向 date-time.php 檔案發出 Ajax 請求。它只是檢索從伺服器返回的日期和時間,並在瀏覽器中顯示它而不重新整理頁面。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery get() Demo</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        $.get("date-time.php", function(data){
            // Display the returned data in browser
            $("#result").html(data);
        });
    });
});
</script>
</head>
<body>
    <div id="result">    
        <h2>Content of the result DIV box will be replaced by the server date and time</h2>
    </div>    
    <button type="button">Load Date and Time</button>
</body>
</html>

這是我們的 date-time.php 檔案,它只輸出伺服器的當前日期和時間。

<?php
// Return current date and time from the server
echo date("F d, Y h:i:s A");
?>

提示: 如果你在 PC 上本地執行這些示例時遇到任何困難,請檢視解決方案的 jQuery Ajax 載入教程。

你還可以使用請求將一些資料傳送到伺服器。在以下示例中,jQuery 程式碼向 create-table.php 發出 Ajax 請求,並將一些其他資料與請求一起傳送到伺服器。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery get() Demo</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        // Get value from input element on the page
        var numValue = $("#num").val();
        
        // Send the input data to the server using get
        $.get("create-table.php", {number: numValue} , function(data){
            // Display the returned data in browser
            $("#result").html(data);
        });
    });
});
</script>
</head>
<body>
    <label>Enter a Number: <input type="text" id="num"></label>
    <button type="button">Show Multiplication Table</button>
    <div id="result"></div>    
</body>
</html>

這是我們的 create-table.php 檔案的 PHP 指令碼,它只輸出使用者在按鈕點選時輸入的數字的乘法表。

<?php
$number = htmlspecialchars($_GET["number"]);
if(is_numeric($number) && $number > 0){
    echo "<table>";
    for($i=0; $i<11; $i++){
        echo "<tr>";
            echo "<td>$number x $i</td>";
            echo "<td>=</td>";
            echo "<td>" . $number * $i . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
?>

使用 jQuery 使用 AJAX 執行 POST 請求

POST 請求與 jQuery 中的 GET 請求相同。因此,通常你應該使用哪種方法, $.get() 或者 $.post() 基本上取決於伺服器端程式碼的要求。如果要傳輸大量資料(例如表單資料),則需要使用 POST,因為 GET 對資料傳輸有嚴格的限制。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery post() Demo</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("form").submit(function(event){
        // Stop form from submitting normally
        event.preventDefault();
        
        /* Serialize the submitted form control values to be sent to the web server with the request */
        var formValues = $(this).serialize();
        
        // Send the form data using post
        $.post("display-comment.php", formValues, function(data){
            // Display the returned data in browser
            $("#result").html(data);
        });
    });
});
</script>
</head>
<body>
    <form>
        <label>Name: <input type="text" name="name"></label>
        <label>Comment: <textarea cols="50" name="comment"></textarea></label>
        <input type="submit" value="Send">
    </form>
    <div id="result"></div>    
</body>
</html>

這是我們的 display-comment.php 檔案,它只輸出使用者輸入的資料。

<?php
$name = htmlspecialchars($_POST["name"]);
$comment = htmlspecialchars($_POST["comment"]);
echo "Hi, $name. Your comment has been received successfully." . "<br>";
echo "Here's the comment what you've entered: $comment";
?>

現在你已經學習瞭如何使用 jQuery 非同步執行各種 Ajax 操作,例如載入資料,提交表單等。在結束本章之前,請檢視另一個經典的 Ajax 示例 ,它將向你展示如何根據使用 jQuery 在 country 下拉選單中選擇的選項填充州或城市下拉選單。