我试图使用post变量“action”从javascript调用php函数,但我似乎无法从服务器获得响应

时间:2016-01-24 12:39:27

标签: javascript php ajax

以下是示例代码,因此从我的javascript中发送一个名为action =“login”的帖子变量

此操作将发送到包含此

的controller.php文件
<?php

require_once('config.php');
require_once('functions.php');

if(isset($_POST['action']) && !empty($_POST['action'])){

        $action = $_POST['action'];
        $con = db_connect(SERVER, USER, PASSWORD, DB_NAME);

        switch($action){

                /****************************
                *           MISC SCENARIOS
                            **************************/

                        case "login":
                        login($con);
                        break;
            }

        mysqli_close($con); 
    }
?>

然后在functions.php文件中调用看起来像这样的登录函数

function login($con){

        $email = trim($_POST['email']);
        $password = trim($_POST['password']);

        if(isset($email) && !empty($email) && isset($password) && !empty($password)){

            $connector = db_connect(SERVER, USER, PASSWORD, DB_NAME);

            $query = "SELECT * FROM edwaze_quiz.USERS WHERE EMAIL = '".$email."' AND PASSWORD = '".$password."' AND RIGHTS < 4;";

            $result = mysqli_query($con, $query);

            $count = mysqli_num_rows($result);

            if($count == 1){

                $result = mysqli_fetch_assoc($result);

                $name = $result['FIRST_NAME']." ".$result['SURNAME'];

                $path = '/quizz/profile images/';

                $picture = "unknown.jpeg";
                if($result['IMAGE'])
                    $picture = $result['IMAGE'];

                $picture = $path.$picture;

                echo json_encode(array($name, $picture));

            }else
                echo false;
            }
    }

现在,我的问题是,这在localhost中完美运行。但是,当我把它放在远程服务器上时,我绝对没有回来。没有反应。我试图把一堆“echo”全部放在一边,即使在controller.php中的“require_once”代码之后的顶部,仍然没有。

config.php包含所有需要的数据库变量。用户名,密码

我无法弄清楚为什么它不起作用,请帮忙吗?

2 个答案:

答案 0 :(得分:0)

这是一个简单的例子:

<?php 


function login(){

        $email = trim($_POST['email']);
        $password = trim($_POST['password']);

        echo json_encode(array($email,$password));
}



if(empty($_GET["page"])) header("location:34975890.php?page=start");


if($_GET['page']=='start'){?>
    <!-- Latest compiled and minified JS -->
    <script src="//code.jquery.com/jquery.js"></script>
    <script type="text/javascript">
        function getLogin(){
            $.ajax({
                url: '34975890.php?page=send',
                type: 'POST',
                dataType: 'json',
                data: {email: 'myemail@mail.com',password:'1234'},
                success:function(result){
                    console.log(result);
                    alert("complete");
                }
            });
        }
    </script>
    <form action="javascript:getLogin()">
        <button type="submit">Launch</button>
    </form>

<?php }else if($_GET['page']=='send'){

    login();

}

?>

尝试并告诉我,我只用一个小例子用PHP嵌入了html,但是可以读取数据。您可以轻轻地聚集部分代码来登录php功能。

答案 1 :(得分:0)

我将问题追溯到包含此

的函数中的一行
if(!empty(trim($fileName)))
    unlink($root."/".str_replace("../", "", trim($fileName)));

通过从“empty()”中删除“trim”功能到此

来结束
if(!empty($fileName))
    unlink($root."/".str_replace("../", "", trim($fileName)));

解决了这个问题。

从php手册中为空,这是引用

  

注意:   在PHP 5.5之前,empty()仅支持变量;其他任何东西都会导致解析错误。换句话说,以下将不起作用:empty(trim($ name))。相反,使用trim($ name)== false。   如果变量不存在,则不会生成警告。这意味着empty()基本上是!isset($ var)||的简洁等价物$ var == false。

我希望这有助于某人。欢呼声。