Hướng dẫn can javascript function call php function? - hàm javascript có thể gọi hàm 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, " ") . ";");
?>
0 của hàm JS
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
1 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, " ") . ";");
?>
0 variable of JS function
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
1 , 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:

<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, " ") . ";");
?>
1. Đây là JavaScript để gọi PHP:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
1 function. This is the JavaScript to call PHP:

//Names of parameters are custom, they haven't to be equals of these of the PHP file.
//These fake names are required to assign value to the parameters in PHP
//using an hash table.
callPHP("add(num1, num2)", {
            'num1' : 1,
            'num2' : 2
        },
            function(output) {
                alert(output); //This to display the output of the PHP file.
        });

PHP đi kèm với nhiều chức năng tích hợp hơn để hoạt động với các chuỗi, mảng và các loại dữ liệu khác so với JavaScript. Do đó, việc rất nhiều người cảm thấy muốn gọi các chức năng PHP từ JavaScript là điều tự nhiên. Tuy nhiên, như bạn có thể đoán hoặc phát hiện ra, điều này không hoạt động như mong đợi.

Có thể có rất nhiều trường hợp khác mà bạn có thể muốn chạy một số mã PHP bên trong JavaScript, ví dụ, để lưu một số dữ liệu trên máy chủ của bạn. Chỉ cần đặt mã PHP bên trong JavaScript cũng sẽ không hoạt động trong trường hợp này.

Lý do bạn không thể gọi một hàm PHP từ JavaScript phải làm với thứ tự mà các ngôn ngữ này được chạy. PHP là ngôn ngữ phía máy chủ và JavaScript chủ yếu là ngôn ngữ phía máy khách.

Bất cứ khi nào bạn muốn truy cập một trang, trình duyệt sẽ gửi yêu cầu đến máy chủ, sau đó xử lý yêu cầu và tạo một số đầu ra bằng cách chạy mã PHP. Trang web đầu ra hoặc được tạo sau đó được gửi lại cho bạn. Trình duyệt thường mong đợi trang web bao gồm HTML, CSS và JavaScript. Bất kỳ PHP nào mà bạn có thể đã đặt hoặc lặp lại bên trong JavaScript sẽ chạy đã chạy hoặc sẽ không chạy hoàn toàn khi trang web tải trong trình duyệt.

Tất cả hy vọng không bị mất, mặc dù. Trong hướng dẫn này, tôi sẽ giải thích cách bạn có thể gọi các chức năng PHP từ các hàm JavaScript và JavaScript từ PHP.

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

Chúng ta có thể sử dụng AJAX để gọi chức năng PHP trên dữ liệu được tạo bên trong trình duyệt. AJAX được sử dụng bởi rất nhiều trang web để cập nhật các phần của trang web mà không tải lại trang đầy đủ. Nó có thể cải thiện đáng kể trải nghiệm người dùng khi được thực hiện đúng.

Hãy nhớ rằng mã PHP vẫn sẽ chạy trên chính máy chủ. Chúng tôi sẽ chỉ cung cấp cho nó dữ liệu từ trong tập lệnh của chúng tôi.

Sử dụng JQuery Ajax để chạy mã PHP

Nếu bạn đang sử dụng jQuery trên trang web của mình, việc gọi bất kỳ tệp PHP nào có mã mà bạn muốn chạy trở nên dễ dàng.

Bạn có thể chuyển một hoặc hai tham số cho hàm

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
3. Khi hai tham số được truyền, cái đầu tiên sẽ là URL của trang web nơi trình duyệt sẽ gửi yêu cầu của bạn. Khi bạn chỉ chuyển một tham số cho
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
3, URL sẽ được chỉ định trong cấu hình.

Tham số thứ hai chứa một loạt các tùy chọn cấu hình khác nhau để chỉ định dữ liệu bạn dự định xử lý và phải làm gì trong trường hợp thành công hoặc thất bại, v.v. Các tùy chọn cấu hình được truyền ở định dạng JSON.

Bạn có thể sử dụng tham số

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
5 để chỉ định phương thức HTTP nên được sử dụng để thực hiện yêu cầu. Chúng tôi sẽ đặt nó thành
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
6 vì chúng tôi cũng sẽ gửi dữ liệu đến máy chủ.

Bây giờ, chúng ta hãy xem một ví dụ về yêu cầu AJAX cơ bản nơi chúng ta sẽ chuyển dữ liệu đến tệp PHP và gọi chức năng PHP

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
7 trong tệp đó. Đây là trang web hoàn chỉnh của chúng tôi:

<!doctype html>
<html lang=en>
<head>
<meta charset=utf-8>
<title>PHP Function in JavaScript Demo</title>
<style>
body {
    font-family: 'Lato';
    font-weight: 400;
    font-size: 1.4rem;
}

p {
    text-align: center;
	margin-bottom: 4rem;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<p class="unbroken">The United States (U.S. or US)—officially the United States of America (USA), commonly known as America—is a country primarily located in North America, consisting of 50 states, a federal district, five major self-governing territories, 326 reservations, and various possessions. At 3.8 million square miles (9.8 million square kilometers), it is the world's third- or fourth-largest country by total area. With a population of more than 328 million people, it is the third most populous country in the world. The national capital is Washington, D.C., and the most populous city is New York City.</p>
<p class="broken"></p>
<script>
$.ajax({
  method: "POST",
  url: "wrap.php",
  data: { text: $("p.unbroken").text() }
})
  .done(function( response ) {
    $("p.broken").html(response);
  });
</script>
</body>
</html>

Đặt mã sau trong một tệp có tên Wrap.php trong cùng một thư mục.wrap.php in the same directory.

<?php
$text = $_POST['text'];
$output = wordwrap($text, 60, "<br>");
echo $output;
?>

Hãy nhớ rằng bạn phải

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
8 dữ liệu mà bạn muốn gửi lại cho trình duyệt. Trang web của bạn sẽ trông giống như hình ảnh bên dưới nếu mọi thứ diễn ra tốt đẹp.

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

Sử dụng API tìm nạp để chạy mã PHP

Bạn cũng có thể sử dụng API tìm nạp để chạy mã PHP trên dữ liệu được thu thập bên trong trình duyệt bằng cách gửi yêu cầu POST đến máy chủ. Trong ví dụ trước, chúng tôi có thể thay thế mã AJAX bằng JavaScript sau để có kết quả tương tự.

fetch('wrap.php', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    },
    body: "text=" + document.querySelector("p.unbroken").innerText
  })
  .then(response => response.text())
  .then(data => document.querySelector("p.broken").innerHTML = data);

Giống như trong ví dụ AJAX, chúng tôi chỉ định URL và cung cấp thông tin tiêu đề bổ sung rằng chúng tôi sẽ gửi dữ liệu của chúng tôi ở dạng được mã hóa URL. Điều này cho phép chúng tôi sử dụng

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
9 ở phía máy chủ để đọc dữ liệu.

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

Như bạn đã biết bây giờ, PHP sẽ chạy trước JavaScript khi bạn yêu cầu một trang web từ một số máy chủ. Chúng tôi cũng có thể xuất bất cứ thứ gì chúng tôi muốn hiển thị trên trang web bằng cách sử dụng

<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
8. Cùng
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
8 có thể được sử dụng để xuất JavaScript sẽ chạy trong trình duyệt của máy khách.

Dưới đây là một số mã ví dụ sẽ kiểm tra một loạt các chuỗi để tìm chỉ số của palindrom cuối cùng. Chỉ số này được lưu trữ trong một biến PHP, sau đó được chuyển đến JavaScript được viết 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;
}
?>
2 bằng cách sử dụng
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
    eval(trim($line, " ") . ";");
?>
8.

<?php

$words = ['apple', 'radar', 'mango', 'civic', 'banana'];

$pal_index = 0;
$last_pal = 0;
foreach($words as $word) {
  if($word == strrev($word)) {
    $last_pal = $pal_index;
  }
  echo '<p>'.ucfirst($word).'</p>';
  $pal_index += 1;
}
?>
<script>
<?php
echo 'let p_el = document.querySelectorAll("p")['.$last_pal.']';
?>
let red = Math.round(p_el.getBoundingClientRect().top)%256;
let green = Math.round(p_el.getBoundingClientRect().right)%256;
p_el.style.color =  "rgb(" + red + ", " + green + ", 0)";
</script>

Ví dụ trên cho thấy cách bạn có thể chuyển dữ liệu từ PHP sang JavaScript bằng cách đơn giản lặp lại nó. Chỉ cần đảm bảo rằng mã bạn lặp lại là JavaScript hợp lệ.

Sự kết luận

Chúng ta đều biết rằng PHP chạy trên máy chủ và JavaScript thường chạy trong trình duyệt. Vì cả hai thực thi vào các thời điểm khác nhau, bạn không thể gọi các hàm từ ngôn ngữ này trong một ngôn ngữ khác và mong đợi mã hoạt động. Tuy nhiên, có nhiều cách để giải quyết vấn đề đó, cho phép trao đổi thông tin giữa PHP và JavaScript.

Để tóm tắt, bạn có thể sử dụng AJAX khi bạn muốn gọi hàm PHP từ JavaScript hoặc chạy mã PHP trên một số dữ liệu được tạo bên trong trình duyệt. Bạn có thể sử dụng Echo trong PHP để xuất mã JavaScript sẽ chạy sau trong trình duyệt của máy khách. Nếu bạn có bất kỳ câu hỏi về bài viết, xin vui lòng cho tôi biết trong các ý kiến.

Tìm hiểu PHP với một khóa học trực tuyến miễn phí

Nếu bạn muốn học PHP, hãy xem khóa học trực tuyến miễn phí của chúng tôi về các nguyên tắc cơ bản của PHP!

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

Trong khóa học này, bạn sẽ tìm hiểu các nguyên tắc cơ bản của lập trình PHP. Bạn sẽ bắt đầu với những điều cơ bản, tìm hiểu cách PHP hoạt động và viết các vòng và chức năng PHP đơn giản. Sau đó, bạn sẽ xây dựng thành các lớp mã hóa cho lập trình hướng đối tượng đơn giản (OOP). Trên đường đi, bạn sẽ tìm hiểu tất cả các kỹ năng quan trọng nhất để viết ứng dụng cho web: bạn sẽ có cơ hội thực hành trả lời để nhận và đăng yêu cầu, phân tích cú pháp JSON, xác thực người dùng và sử dụng cơ sở dữ liệu MySQL.

Bạn có thấy bài đăng này hữu ích?

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

Freelancer, người hướng dẫn

Tôi là một nhà phát triển đầy đủ, người cũng thích viết các hướng dẫn. Sau khi thử một loạt những điều cho đến năm thứ hai đại học, tôi quyết định làm việc về các kỹ năng phát triển web của mình. Bắt đầu chỉ với HTML và CSS, tôi tiếp tục tiến về phía trước và có được kinh nghiệm trong PHP, JavaScript và Python. Tôi thường dành thời gian rảnh của mình hoặc làm việc cho một số dự án phụ hoặc đi du lịch xung quanh.