如何在 ajax 方法中调用 php 函数
How to call php function inside ajax method
这里我有以下代码。我想在名为 functions.php 的文件中调用一个函数并将 $var1 作为参数传递,我将如何执行此操作
$(document).ready(function() {
$("#your_teams234").change(function() {
var team = $("#your_teams234").val();
$.ajax({
url: 'functions.php',
method: 'post',
data: 'members=' + team
}).done(function(requests) {
console.log(requests);
requests = JSON.parse(requests);
$('#teammates').empty();
requests.forEach(function(request) {
$('#teammates').append('<p class="myDivs">' + request.fname + ' ' + request.lname + '</p>')
})
$('.myDivs').click(function()
{
$var1 = $(this).text();
alert($var1);
});
})
})
})
通常,您会有包含 functions/definitions 和其他处理请求的文件。 (这不是必须的,只是常规做法)
处理请求的文件将包括来自其他文件
的任何相关functions/definitions
对于这种情况,让我们使用 functions.php
来包含您的主要功能,并使用 actions.php
作为处理请求的页面
查看下面的设置
// functions.php file
function get_team_members(string $team_name){
// return a list of members based on $team_name
}
// actions.php file
include "functions.php";
$action = $_POST["action"] ?? "";
$data = null;
switch($action){
case "get_team_members":
$data = get_team_members($_POST["team"] ?? "");
break;
}
echo json_encode($data);
// js file
$(document).ready(function() {
$("#your_teams234").change(function() {
var team = $("#your_teams234").val();
$.ajax({
url: 'actions.php', // update the url to request from actions.php
method: 'post',
data: { // update data to reflect expected data
action: "get_team_members",
team: team,
},
})
.done(function(requests) { ... })
})
})
我认为问题是您正试图在 jQuery 中声明一个变量,如 PHP。
$var1 = $(this).text();
尝试以下操作,希望您的问题得到解决。
- 您的 PHP 函数在
functions.php
中应该如下所示
假设您正在从数据库中检索数据,
public function ajaxGetData()
{
//If you need any identifier from the front end
$user_id = $this->request->getPost('user_id');
//Access the database to get data (using codeigniter here)
$my_model = new Model_Name();
$data = $my_model->findAll();
if (!$data)
echo "FALSE";
else
echo json_encode($data);
}
- 并确保您在 ajax
中调用函数名称
$.ajax({
url: "functions/ajaxGetData",
type: "POST",
data: {
user_id: id //pass the id here if required (optional)
},
success: function (data) {
if(data != "FALSE"){
var jArr = $.parseJSON(data);
$('#teammates').empty();
jArr.forEach(element => {
$('#teammates').append('<p class="myDivs">' + element.fname + ' ' + element.lname + '</p>')
})
}
}
else $("#teammates").html('<p>No data found</p>');
},
error: function (xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
},
});
- 要添加点击功能,请添加单独的 jQuery 功能
$(document).ready(function () {
$(document).on("click", ".myDivs", function(){
var text = $(this).html();
alert(text);
});
});
这里我有以下代码。我想在名为 functions.php 的文件中调用一个函数并将 $var1 作为参数传递,我将如何执行此操作
$(document).ready(function() {
$("#your_teams234").change(function() {
var team = $("#your_teams234").val();
$.ajax({
url: 'functions.php',
method: 'post',
data: 'members=' + team
}).done(function(requests) {
console.log(requests);
requests = JSON.parse(requests);
$('#teammates').empty();
requests.forEach(function(request) {
$('#teammates').append('<p class="myDivs">' + request.fname + ' ' + request.lname + '</p>')
})
$('.myDivs').click(function()
{
$var1 = $(this).text();
alert($var1);
});
})
})
})
通常,您会有包含 functions/definitions 和其他处理请求的文件。 (这不是必须的,只是常规做法)
处理请求的文件将包括来自其他文件
的任何相关functions/definitions对于这种情况,让我们使用 functions.php
来包含您的主要功能,并使用 actions.php
作为处理请求的页面
查看下面的设置
// functions.php file
function get_team_members(string $team_name){
// return a list of members based on $team_name
}
// actions.php file
include "functions.php";
$action = $_POST["action"] ?? "";
$data = null;
switch($action){
case "get_team_members":
$data = get_team_members($_POST["team"] ?? "");
break;
}
echo json_encode($data);
// js file
$(document).ready(function() {
$("#your_teams234").change(function() {
var team = $("#your_teams234").val();
$.ajax({
url: 'actions.php', // update the url to request from actions.php
method: 'post',
data: { // update data to reflect expected data
action: "get_team_members",
team: team,
},
})
.done(function(requests) { ... })
})
})
我认为问题是您正试图在 jQuery 中声明一个变量,如 PHP。
$var1 = $(this).text();
尝试以下操作,希望您的问题得到解决。
- 您的 PHP 函数在
functions.php
中应该如下所示 假设您正在从数据库中检索数据,
public function ajaxGetData()
{
//If you need any identifier from the front end
$user_id = $this->request->getPost('user_id');
//Access the database to get data (using codeigniter here)
$my_model = new Model_Name();
$data = $my_model->findAll();
if (!$data)
echo "FALSE";
else
echo json_encode($data);
}
- 并确保您在 ajax 中调用函数名称
$.ajax({
url: "functions/ajaxGetData",
type: "POST",
data: {
user_id: id //pass the id here if required (optional)
},
success: function (data) {
if(data != "FALSE"){
var jArr = $.parseJSON(data);
$('#teammates').empty();
jArr.forEach(element => {
$('#teammates').append('<p class="myDivs">' + element.fname + ' ' + element.lname + '</p>')
})
}
}
else $("#teammates").html('<p>No data found</p>');
},
error: function (xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
},
});
- 要添加点击功能,请添加单独的 jQuery 功能
$(document).ready(function () {
$(document).on("click", ".myDivs", function(){
var text = $(this).html();
alert(text);
});
});