Ajax

Ajax (JavaScript và XML không đồng bộ) là một tập hợp các kỹ thuật phát triển web sử dụng nhiều công nghệ web được sử dụng ở phía máy khách để tạo các ứng dụng Web không đồng bộ. Nhập thư viện jquery trong tệp dạng xem của bạn để sử dụng các hàm ajax của jquery sẽ được sử dụng để gửi và nhận dữ liệu bằng ajax từ máy chủ. Ở phía máy chủ, bạn có thể sử dụng hàm response () để gửi phản hồi đến máy khách và để gửi phản hồi ở định dạng JSON, bạn có thể xâu chuỗi hàm phản hồi với hàm json ().

cú pháp hàm json ()

json(string|array $data = array(), int $status = 200, array $headers = array(), int $options)

Thí dụ

Bước 1 – Tạo một tệp xem có tên là resources / views / message.php và sao chép đoạn mã sau vào tệp đó.

<html>
   <head>
      <title>Ajax Example</title>
      
      <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
      </script>
      
      <script>
         function getMessage() {
            $.ajax({
               type:'POST',
               url:'/getmsg',
               data:'_token = <?php echo csrf_token() ?>',
               success:function(data) {
                  $("#msg").html(data.msg);
               }
            });
         }
      </script>
   </head>
   
   <body>
      <div id = 'msg'>This message will be replaced using Ajax. 
         Click the button to replace the message.</div>
      <?php
         echo Form::button('Replace Message',['onClick'=>'getMessage()']);
      ?>
   </body>

</html>

Bước 2 – Tạo một bộ điều khiển có tên là AjaxController bằng cách thực hiện lệnh sau.

php artisan make:controller AjaxController --plain

Bước 3 – Sau khi thực hiện thành công, bạn sẽ nhận được kết quả sau:

AjaxController

Bước 4 – Sao chép mã sau vào

tệp app / Http / Controllers / AjaxController.php .app / Http / Controllers / AjaxController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class AjaxController extends Controller {
   public function index() {
      $msg = "This is a simple message.";
      return response()->json(array('msg'=> $msg), 200);
   }
}

Bước 5 – Thêm các dòng sau vào app / Http / route.php .

app / Http / route.php

Route::get('ajax',function() {
   return view('message');
});
Route::post('/getmsg','AjaxController@index');

Bước 6 – Truy cập URL sau để kiểm tra chức năng Ajax.

http://localhost:8000/ajax

Bước 7 – Bạn sẽ được chuyển đến một trang mà bạn sẽ thấy một thông báo như trong hình sau.

Ajax

Bước 8 – Đầu ra sẽ xuất hiện như trong hình sau khi nhấp vào nút.

Ajax

Laravel – Error Handling  Xử lý lỗi

Hầu hết các ứng dụng web đều có các cơ chế cụ thể để xử lý lỗi. Bằng cách sử dụng chúng, họ theo dõi lỗi và ngoại lệ, đồng thời ghi nhật ký chúng để phân tích hiệu suất. Trong chương này, bạn sẽ đọc về xử lý lỗi trong các ứng dụng Laravel.

Điểm quan trọng

Trước khi tiếp tục tìm hiểu chi tiết về cách xử lý lỗi trong Laravel, vui lòng lưu ý những điểm quan trọng sau:

  • Đối với bất kỳ dự án mới nào, Laravel ghi lại các lỗi và ngoại lệ trong lớp App \ Exceptions \ Handler , theo mặc định. Sau đó, chúng được gửi lại cho người dùng để phân tích.

Khi ứng dụng Laravel của bạn được đặt ở chế độ gỡ lỗi, các thông báo lỗi chi tiết có dấu vết ngăn xếp sẽ được hiển thị trên mọi lỗi xảy ra trong ứng dụng web của bạn.

Ajax

Theo mặc định, chế độ gỡ lỗi được đặt thành false và bạn có thể thay đổi nó thành true . Điều này cho phép người dùng theo dõi tất cả các lỗi với dấu vết ngăn xếp.

  • Cấu hình của dự án Laravel bao gồm tùy chọn gỡ lỗi xác định lượng thông tin về lỗi sẽ được hiển thị cho người dùng. Theo mặc định trong ứng dụng web, tùy chọn được đặt thành giá trị được xác định trong các biến môi trường của tệp .env .
    • Giá trị được đặt thành true trong môi trường phát triển cục bộ và được đặt thành false trong môi trường sản xuất.

Nếu giá trị được đặt thành true trong môi trường sản xuất, rủi ro chia sẻ thông tin nhạy cảm với người dùng cuối sẽ cao hơn.

Nhật ký lỗi

Ghi lại các lỗi trong một ứng dụng web giúp theo dõi chúng và lập kế hoạch chiến lược để loại bỏ chúng. Thông tin nhật ký có thể được định cấu hình trong ứng dụng web trong tệp config / app.php . Vui lòng lưu ý các điểm sau khi xử lý Lỗi đăng nhập trong Laravel –

  • Laravel sử dụng thư viện ghi nhật ký PHP monolog.
  • Các thông số ghi nhật ký được sử dụng để theo dõi lỗi là single, daily, syslog và errorlog .
  • Ví dụ: nếu bạn muốn ghi lại thông báo lỗi trong tệp nhật ký, bạn nên đặt giá trị nhật ký trong cấu hình ứng dụng của mình thành hàng ngày như được hiển thị trong lệnh bên dưới –
'log' => env('APP_LOG',’daily’),
  • Nếu chế độ nhật ký hàng ngày được lấy làm tham số, thì theo mặc định , Laravel sẽ lấy nhật ký lỗi trong khoảng thời gian 5 ngày . Nếu bạn muốn thay đổi số tệp nhật ký tối đa, bạn phải đặt tham số của log_max_files trong tệp cấu hình thành giá trị mong muốn.
‘log_max_files’ => 25;

Mức độ nghiêm trọng

Vì Laravel sử dụng thư viện ghi nhật ký PHP độc thoại nên có nhiều tham số khác nhau được sử dụng để phân tích mức độ nghiêm trọng. Các mức độ nghiêm trọng khác nhau có sẵn là các thông báo lỗi, nghiêm trọng, cảnh báo và khẩn cấp . Bạn có thể đặt mức độ nghiêm trọng như được hiển thị trong lệnh bên dưới:

'log_level' => env('APP_LOG_LEVEL', 'error')

Laravel – Event Handling  Xử lý sự kiện

Sự kiện cung cấp một triển khai người quan sát đơn giản cho phép người dùng đăng ký và lắng nghe các sự kiện khác nhau được kích hoạt trong ứng dụng web. Tất cả các lớp sự kiện trong Laravel được lưu trữ trong thư mục ứng dụng / Sự kiện và trình lắng nghe được lưu trữ trong thư mục ứng dụng / Người nghe .

Lệnh thủ công để tạo sự kiện và trình nghe trong ứng dụng web của bạn được hiển thị bên dưới:

php artisan event:generate

Lệnh này tạo các sự kiện và trình nghe vào các thư mục tương ứng như đã thảo luận ở trên.

Ajax

Sự kiện và Trình nghe là một cách tuyệt vời để tách một ứng dụng web, vì một sự kiện có thể có nhiều trình nghe độc ​​lập với nhau. Thư mục sự kiện được tạo bởi lệnh thủ công bao gồm hai tệp sau: event.php và SomeEvent.php. Chúng được hiển thị ở đây –Event.php

<?php
namespace App\Events;
abstract class Event{
   //
}

Như đã đề cập ở trên, event.php bao gồm định nghĩa cơ bản của lớp Event và các lệnh gọi cho không gian tên App \ Events . Xin lưu ý rằng sự kiện do người dùng xác định hoặc tùy chỉnh được tạo trong tệp này.

SomeEvent.php

<?php

namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class SomeEvent extends Event{
   use SerializesModels;
   /**
      * Create a new event instance.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }
   
   /**
      * Get the channels the event should be broadcast on.
      *
      * @return array
   */
   
   public function broadcastOn() {
      return [];
   }
}

Quan sát rằng tệp này sử dụng tuần tự hóa để phát các sự kiện trong ứng dụng web và các thông số cần thiết cũng được khởi tạo trong tệp này.

Ví dụ: nếu chúng ta cần khởi tạo biến thứ tự trong hàm tạo để đăng ký một sự kiện, chúng ta có thể thực hiện theo cách sau:

public function __construct(Order $order) {
   $this->order = $order;
}

Listener

Người nghe xử lý tất cả các hoạt động được đề cập trong một sự kiện đang được đăng ký. Sự kiện lệnh thủ công : tạo ra tất cả các trình nghe trong thư mục ứng dụng / Listener  . Thư mục Listener bao gồm một tệp EventListener.php có tất cả các phương thức cần thiết để xử lý trình nghe.

EventListener.php

<?php

namespace App\Listeners;

use App\Events\SomeEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class EventListener{
   /**
      * Create the event listener.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }

   /**
      * Handle the event.
      *
      * @param SomeEvent $event
      * @return void
   */
   
   public function handle(SomeEvent $event) {
      //
   }
}

Như đã đề cập trong mã, nó bao gồm chức năng xử lý để quản lý các sự kiện khác nhau. Chúng tôi có thể tạo ra nhiều người nghe độc ​​lập khác nhau nhắm mục tiêu đến một sự kiện duy nhất.

Laravel – Facades xem thêm

Trả lời