从包含文件

时间:2017-11-22 11:51:33

标签: javascript php jquery ajax

我有一个表单,它向控制器文件提交一个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);

    }
?>

1 个答案:

答案 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);

}