我有一个包含一些函数的php文件(treatment.php),例如:
public function connexion(){
$user = 'invité';
if($_POST){
if(isset($_POST['user'])) {
session_start();
$user = $_POST['user'];
}
}
echo $user;
}
我想通过Ajax使用以下代码调用此函数,但它不起作用:
$(document).on("click", "#valider-btn", function(){
$.ajax({
url : 'treatment.php/Connexion',
type : 'POST',
data : 'user=' + $("#name").val(),
dataType : 'html',
success : function(donnees) {
$("#name").val("");
$("#formulaire").hide();
$("#decompte").html(donnees);
}
});
});
有人可以帮忙吗?感谢
答案 0 :(得分:1)
Ajax不能那样工作。当您致电treatment.php
时,您必须重新路由给定数据中传递的特定属性的操作。像这样(我假设你的treatment.php
不是一个类):
treatment.php
<?php
if($_POST && isset($_POST['action'])
{
//sanitize action
switch($_POST['action'])
{
case 'connexion':
connexion($_POST['data']);
break;
case 'anotheraction':
//do something
[...]
}
}
function connexion($data = null){
$user = 'invité';
if($data){
if(isset($data['user'])) {
session_start();
$user = $data['user'];
}
}
echo $user;
}
yourjs.js
:
$(document).on("click", "#valider-btn", function(){
$.ajax({
url : 'treatment.php',
type : 'POST',
data : {user: $("#name").val(), action: "connexion"},
dataType : 'html',
success : function(donnees){
$("#name").val("");
$("#formulaire").hide();
$("#decompte").html(donnees);
}
});
});
答案 1 :(得分:-1)
你用JS误解了PHP。
您可以通过执行代码调用.php
文件,但不能自行调用函数。
最好用treatment2.php
分隔PHP:
<?php
include_once "treatment.php";
connexion();
然后调用此文件。
函数本身就是声明 - 当你在PHP文件中使用它时,你可以从外面执行它。
答案 2 :(得分:-1)
首先需要jquery库。
在你的ajax代码中调用.php文件扩展名
$(document).on("click", "#valider-btn", function(){
$.ajax({
url : 'treatment.php/Connexion',
type : 'POST',
data : 'user=' + $("#name").val(),
dataType : 'html',
success : function(donnees){
$("#name").val("");
$("#formulaire").hide();
$("#decompte").html(donnees);
}
});
});