我有一个表单,它向控制器文件提交一个ajax调用,下面有一个在另一个文件中定义的函数" processes.php" [我已经包括在内]。挑战是接收json响应;浏览器希望在控制器中找到它,但它在函数内生成。如何从函数中检索响应并使其在控制器[在其函数之外]中可读,以便浏览器可以读取响应?
Controller.php这样
<?php
session_start();
$_SESSION['postdata'] = $_POST;
require "constants.php";
$file = $_SESSION["Form"].".php";
require $file;
if( isset($_POST["Save"]) ){
save_record($connection);
}
process.php
<?php
$_POST = $_SESSION['postdata'];
function save_record($connection){
$errors = array(); // array to hold validation errors
$data = array(); // array to pass back data
$name = mysqli_real_escape_string($connection, $_POST["name"]);
$strQuery = "INSERT INTO names (name) VALUES ('$name')";
$result = mysqli_query($connection, $strQuery); //or exit("Error in query execution attempt!");
if($result){
$data['success'] = true;
$data['message'] = 'Success!';
}
else{
$errors['errorinexecute'] = "Error in query execution attempt!";
}
mysqli_close($connection);
unset($_SESSION["postdata"]);
if ( ! empty($errors)) {
// if there are items in our errors array, return those errors
$data['success'] = false;
$data['errors'] = $errors;
}
else{
$data['success'] = true;
$data['errors'] = $errors;
}
// return all our data to an AJAX call
echo json_encode($data);
}
?>
答案 0 :(得分:0)
您无法使用:
if( isset($_POST["Save"]) ){
save_record($connection);
}
在做AJAX时,我所做的就是将按钮id传递给JavaScript函数,如下所示:
onclick="saveInfo(this.id)"
按钮ID显示是否是&#34;删除&#34;,&#34;保存&#34;,&#34;编辑&#34;请求等等,然后从那里PHP文件可以这样读:
if( $buttonId == "Save" ){
save_record($connection);
}