công việc này một cách hoàn hảo đối với tôi:
Để gọi một hàm PHP (với các thông số quá), bạn có thể, giống như rất nhiều người dân cho biết, gửi một tham số mở file PHP và từ đó kiểm tra giá trị của tham số để gọi hàm. Nhưng bạn cũng có thể thực hiện rất nhiều người nói rằng điều đó là không thể: trực tiếp gọi hàm 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:
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);
}
});
}
này cho một tập tin PHP mà không phải là file PHP của bạn, nhưng khác, mà con đường được viết bằngurl
biến chức năng JScallPHP
và bắt buộc phải đánh giá mã PHP. Tập tin này được gọi là 'phpCompiler.php' và đó là 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, " ") . ";");
?>
Vì vậy, mã PHP của bạn vẫn bằng trừ giá trị trả lại, mà 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 đề nghị bạn nên nhớ rằng jQuery được yêu cầu:
Tải về nó từ 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>
Thà để tải về các tập tin từ một trong hai CDN và đặt nó dưới dạng tập tin địa phương, do đó tải khởi động của trang web của bạn
nhanh hơn! Sự lựa chọn thuộc về các ngươi!
!.
Bây giờ bạn đã hoàn thành tôi chỉ cho bạn biết làm thế nào để sử dụng
callPHP
chức năng này là hoạt Javascript để gọi 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 là js phía máy chủ là phía máy khách. Bạn sẽ cần phải sử dụng ajax hoặc làm mới trang với các bài viết/bài viết hoặc thử tạo một hàm tương đương js. – Class