2019年4月22日 星期一

Ajax: Form資料傳送與處理

*Ajax: Form資料傳送與處理

*view:
resources\views\message2.blade.php

<!DOCTYPE html>
<html>
<head>
    <!-- <meta name="csrf-token" content="{{ csrf_token() }}"> -->
    <title>Ajax: Form資料傳送與處理</title>
</head>
<body>
    <h3>Ajax: Form資料傳送與處理</h3>
    <form id="demo">
        @csrf
        <p>暱稱:<input type="text" name="nickname" id="nickname"></p>
        <p>性別:
        <select name="gender" id="gender">
            <option value="">請選擇</option>
            <option value="男">男</option>
            <option value="女">女</option>
        </select>
        </p>
        <button type="button" id="submitExample">送出</button>
    </form>
    <br>
    <p id="result"></p> <!-- 顯示回傳資料 -->

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- 引入 jQuery -->
    <script>
    $(document).ready(function() {
        $("#submitExample").click(function() { //ID 為 submitExample 的按鈕被點擊時
            $.ajax({
                type: "POST", //傳送方式
                url: "ajax3", //傳送目的地
                dataType: "json", //資料格式
                // headers: {
                //     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                // }, //可用data中的_token取代
                // data: { //傳送資料
                //     _token:  '{{csrf_token()}}', //可取代headers的X-CSRF-TOKEN設定
                //     nickname: $("#nickname").val(), //表單欄位 ID nickname
                //     gender: $("#gender").val() //表單欄位 ID gender
                // },
                data: $("#demo").serialize(),
                success: function(data) {
                    if (data.nickname) { //如果後端回傳 json 資料有 nickname
                        // $("#demo")[0].reset(); //重設 ID 為 demo 的 form (表單)
                        $("#result").html('<font color="#007500">您的暱稱為「<font color="#0000ff">' + data.nickname + '</font>」,性別為「<font color="#0000ff">' + data.gender + '</font>」!</font>');
                    } else { //否則讀取後端回傳 json 資料 errorMsg 顯示錯誤訊息
                        $("#demo")[0].reset(); //重設 ID 為 demo 的 form (表單)
                        $("#result").html('<font color="#ff0000">' + data.errorMsg + '</font>');
                    }
                },
                error: function(jqXHR) {
                    $("#demo")[0].reset(); //重設 ID 為 demo 的 form (表單)
                    $("#result").html('<font color="#ff0000">發生錯誤:' + jqXHR.status + '</font>');
                }
            })
        })
    });
    </script>
</body>
</html>

------------------
*controller:
app\Http\Controllers\AjaxController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class AjaxController extends Controller
{
    //Ajax: Form資料傳送與處理
    public function ajaxFormView(){
        return view('message2');
    }

    public function ajaxFormData(){
        $nickname = $_POST["nickname"];
        $gender = $_POST["gender"];

        return response()->json(['nickname'=> $nickname,'gender'=> $gender]);
    }
}

------------------
*route:
routes\web.php

Route::get('ajax2','AjaxController@ajaxFormView');
Route::post('ajax3','AjaxController@ajaxFormData');

沒有留言:

張貼留言