Hướng dẫn can javascript call php? - javascript có thể gọi php không?

Công việc này hoàn hảo cho tôi:

Để gọi hàm PHP (với các tham số cũng vậy), bạn có thể, giống như nhiều người đã nói, gửi một tham số mở tệp PHP và từ đó kiểm tra giá trị của tham số để gọi hàm. Nhưng bạn cũng có thể làm nhiều người nói rằng điều đó là không thể: trực tiếp gọi chức năng PHP thích hợp mà không cần thêm mã vào tệp PHP.

Tôi tìm thấy một cách:

Điều này cho JavaScript:

function callPHP(expression, objs, afterHandler) {
        expression = expression.trim();
        var si = expression.indexOf("(");
        if (si == -1)
            expression += "()";
        else if (Object.keys(objs).length > 0) {
            var sfrom = expression.substring(si + 1);
            var se = sfrom.indexOf(")");
            var result = sfrom.substring(0, se).trim();
            if (result.length > 0) {
                var params = result.split(",");
                var theend = expression.substring(expression.length - sfrom.length + se);
                expression = expression.substring(0, si + 1);
                for (var i = 0; i < params.length; i++) {
                    var param = params[i].trim();
                    if (param in objs) {
                        var value = objs[param];
                        if (typeof value == "string")
                            value = "'" + value + "'";
                        if (typeof value != "undefined")
                            expression += value + ",";
                    }
                }
                expression = expression.substring(0, expression.length - 1) + theend;
            }
        }
        var doc = document.location;
        var phpFile = "URL of your PHP file";
        var php =
            "$docl = str_replace('/', '\\\\', '" + doc + "'); $absUrl = str_replace($docl, $_SERVER['DOCUMENT_ROOT'], str_replace('/', '\\\\', '" + phpFile + "'));" +
            "$fileName = basename($absUrl);$folder = substr($absUrl, 0, strlen($absUrl) - strlen($fileName));" +
            "set_include_path($folder);include $fileName;" + expression + ";";
        var url = doc + "/phpCompiler.php" + "?code=" + encodeURIComponent(php);
        $.ajax({
            type: 'GET',
            url: url,
            complete: function(resp){
                var response = resp.responseText;
                afterHandler(response);
            }
        });
    }


Điều này đối với một tệp PHP không phải là tệp PHP của bạn, mà là một tệp khác, đường dẫn được viết trong biến

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
3 của hàm JS
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4 và cần phải đánh giá mã PHP. Tệp này được gọi là 'phpcompiler.php' và nó nằm trong thư mục gốc của trang web của bạn:3 của hàm JS
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4 và cần phải đánh giá mã PHP. Tệp này được gọi là 'phpcompiler.php' và nó nằm trong thư mục gốc của trang web của bạn:

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
3 variable of JS function
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4 , and it's required to evaluate PHP code. This file is called 'phpCompiler.php' and it's in the root directory of your website:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
variable of JS function
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4 , and it's required to evaluate PHP code. This file is called 'phpCompiler.php' and it's in the root directory of your website:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>


Vì vậy, mã PHP của bạn vẫn bằng nhau ngoại trừ các giá trị trả về, sẽ được lặp lại:

<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>


Tôi khuyên bạn nên nhớ rằng cần phải có jQuery: Tải xuống từ Google CDN: Download it from Google CDN:
Download it from Google CDN:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

hoặc từ Microsoft CDN: "Tôi thích Google! :)"

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script>

Tốt hơn là tải xuống tệp từ một trong hai CDN và đặt nó dưới dạng tệp cục bộ, vì vậy việc tải khởi động trang web của bạn nhanh hơn!

Sự lựa chọn là cho bạn!


Bây giờ bạn đã hoàn thành! Tôi chỉ cho bạn biết cách sử dụng hàm
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4. Đây là JavaScript để gọi PHP:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4 function. This is the JavaScript to call PHP:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
1
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
4 function. This is the JavaScript to call PHP:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
1

Có hai cách gọi chức năng PHP từ JavaScript tùy thuộc vào kiến ​​trúc dự án web của bạn:

  • Bạn có thể gọi chức năng Php Inline từ thẻ
    <?php
    $code = urldecode($_REQUEST['code']);
    $lines = explode(";", $code);
    foreach($lines as $line)
        eval(trim($line, " ") . ";");
    ?>
    
    6
  • Bạn có thể sử dụng phương thức JavaScript
    <?php
    $code = urldecode($_REQUEST['code']);
    $lines = explode(";", $code);
    foreach($lines as $line)
        eval(trim($line, " ") . ";");
    ?>
    
    7 và gửi yêu cầu HTTP đến máy chủ PHP

Hướng dẫn này sẽ giúp bạn tìm hiểu cả hai cách một cách dễ dàng. Hãy bắt đầu với việc gọi chức năng PHP nội tuyến

Gọi chức năng PHP từ JavaScript Inline

Nếu bạn sử dụng các tệp PHP để hiển thị các trang web của mình, thì bạn có thể gọi chức năng PHP từ JavaScript bằng cách gọi chức năng PHP

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
8.

Giả sử bạn có tệp

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
9 với nội dung sau:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
6

Sau đó, bạn viết nội dung HTML của mình ngay bên dưới chức năng như sau:

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
7

Bạn có thể bao gồm một thẻ

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
6 bên trong thẻ
<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
1 gọi vào chức năng PHP như sau:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
0

Khi bạn mở tệp

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
9 của mình từ trình duyệt, bạn sẽ thấy HTML được hiển thị như sau:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
2

Bất kỳ mã PHP nào bạn bao gồm bên trong trang HTML của bạn sẽ được xử lý ở phía máy chủ trước khi được phục vụ cho trình duyệt.

Khi bạn gọi chức năng Php Inline từ JavaScript như được hiển thị ở trên, bạn có thể sử dụng các giá trị động từ đầu vào của người dùng.

Nếu bạn muốn gọi chức năng PHP như một phản hồi cho hành động của người dùng, thì bạn cần gửi yêu cầu HTTP từ JavaScript đến tệp PHP. Hãy để học hỏi điều đó tiếp theo.

Gọi chức năng PHP từ JavaScript qua yêu cầu HTTP

Để gửi yêu cầu HTTP từ JavaScript đến máy chủ PHP, bạn cần thực hiện như sau:

  • Tách tệp PHP của bạn khỏi tệp HTML của bạn
  • Gọi chức năng PHP qua yêu cầu HTTP bằng phương thức JavaScript
    <?php
    $code = urldecode($_REQUEST['code']);
    $lines = explode(";", $code);
    foreach($lines as $line)
        eval(trim($line, " ") . ";");
    ?>
    
    7

Đầu tiên, tách chức năng PHP của bạn trong một tệp khác. Hãy để Gọi cho tệp

<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
4 và đặt nội dung sau bên trong nó:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
0

Tiếp theo, tạo một tệp

<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
5 trong cùng một thư mục nơi bạn đã tạo tệp
<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
4 và đặt nội dung sau bên trong nó:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
1

Phương thức

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
7 sẽ được thực thi mỗi lần nhấp vào phần tử
<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
8. JavaScript sẽ gửi yêu cầu
<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
9 đến máy chủ PHP và viết phản hồi bên trong phần tử
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
0.

Trong mã trên, tôi đã sử dụng URL đầy đủ của

<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
4 của mình, được đặt tại
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
2. Bạn cần thay đổi địa chỉ thành vị trí tệp PHP thực tế của bạn.

Khi các tệp của bạn đã sẵn sàng, hãy mở tệp

<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
5 từ trình duyệt. Vui lòng đảm bảo rằng bạn sẽ mở tệp HTML từ cùng một máy chủ phục vụ các tệp PHP của bạn để tránh các sự cố CORS.

Bạn có thể chạy một máy chủ PHP cục bộ bằng lệnh

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
4 và mở
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
5 từ trình duyệt để xem trang HTML của bạn.

Khi bạn nhấp vào nút, phương thức

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
7 sẽ được thực thi và JavaScript sẽ đặt phản hồi bên trong phần tử
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
7.

HTML kết quả sẽ như sau:

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
2

Bây giờ mã của bạn đang hoạt động, bạn có thể thêm các phần tử

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
8 vào trang HTML và gán các giá trị mà người dùng đặt trong các phần tử đó cho các biến
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
9 và
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script>
0.Hàm PHP sẽ có thể thêm các giá trị động một cách chính xác

Và đó là hai cách bạn có thể gọi chức năng PHP từ JavaScript.Thường xuyên hơn, bạn muốn tách các tệp PHP khỏi các tệp JavaScript và gọi chức năng PHP bằng các yêu cầu HTTP.

Mẫu tương tự cũng hoạt động khi bạn đang phát triển ứng dụng web bằng cách sử dụng khung PHP hiện đại như Laravel và các thư viện JavaScript hiện đại như React và Vue.

Bạn có thể sử dụng phương thức

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
7 và gửi yêu cầu
<?php
function add($a,$b){
  $c=$a+$b;
  echo $c;
}
function mult($a,$b){
  $c=$a*$b;
  echo $c;
}

function divide($a,$b){
  $c=$a/$b;
  echo $c;
}
?>
9 đến đúng tuyến API Laravel mà bạn đã tạo và gửi đúng tham số.