Opencart:使用ajax请求响应创建单独的登录页面

时间:2015-03-18 07:50:27

标签: php jquery ajax opencart2.x

我在opencart中有两个页面1)demo.php和2)response.php 我从demo.php发送电子邮件和密码以在response.php中验证并回复响应

demo.php页面

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript">
$("document").ready(function(){
    $(".js-ajax-php-json").submit(function(){
        var data = {"action": "test"};
        data = $(this).serialize() + "&" + $.param(data);
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/catalog/controller/account/response.php",
            data: data,
            success: function(data) {
                $(".the-return").html(
                    "Email" + data["email"] + "<br />Password" + data["password"] + "<br />JSON: " + data["json"]   );              
            }
        });
        return false;
    });
});
</script>
</head>
<body>
<form action="return.php" class="js-ajax-php-json" method="post" accept-charset="utf-8">
  <input type="text" name="email" value=""/>
  <input type="text" name="password" value="" />
  <input type="submit" name="submit" value="Submit form"  />
</form>
<div class="the-return">
  [HTML is replaced when successful.]
</div>
</body>
</html>

和response.php页面

<?php
if (is_ajax()) {
    if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
        $action = $_POST["action"];
        switch($action) { case "test": test(); break;   }//Switch case for value of action
    }
}

//Function to check if the request is an AJAX request
function is_ajax() {
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}

function test(){
    $return = $_POST;
    $return["json"] = json_encode($return);
    echo json_encode($return);
}

这项工作正常,当我添加此代码时,它将无法正常工作

response.php

<?php
$root = $_SERVER['DOCUMENT_ROOT'] . '/home/abc/public_html/abc/catalog//';

if (file_exists($root . 'config.php')) { require_once($root . 'config.php');}
if (file_exists($root . 'system/startup.php')) { require_once($root . 'system/startup.php');}
if (file_exists($root . 'system/library/login.php')) { require_once($root . 'system/library/login.php');}

/**********************/
/**********************/
if (is_ajax()) {
  if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
    $action = $_POST["action"];
    switch($action) 
    { case "test": test(); break; } //Switch case for value of action
  }
}
//Function to check if the request is an AJAX request
function is_ajax() {
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
/**********************/
/**********************/

$user = new login();

function test(){
if ($user->login('username','password')) 
  { $data1 = array();
    $data1[] = 'hello';
    $noreturn = $data1;
    $noreturn["json"] = json_encode($noreturn);
    echo json_encode($noreturn);} 
else  
  { $return = $_POST;
    $return["json"] = json_encode($return);
    echo json_encode($return);}  
}


?>

1 个答案:

答案 0 :(得分:1)

您需要声明ControllerAccountResponse类并扩展Controller。此外,您可以从OpenCart中的URL调用函数。将url更改为index.php并使用route参数查找正确的控制器。 route参数中的前两项是目录和文件,第三项是您要调用的函数。

查看:

<script type="text/javascript">
$("document").ready(function(){
    $(".js-ajax-php-json").submit(function(){
        var data = {"action": "test"};
        data = $(this).serialize() + "&" + $.param(data);
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "index.php?route=account/response/yourfunction",
            data: data,
            success: function(data) {
                $(".the-return").html(
                    "Email" + data["email"] + "<br />Password" + data["password"] + "<br />JSON: " + data["json"]   );              
            }
        });
        return false;
    });
});
</script>

控制器:

<?php
class ControllerAccountResponse extends Controller {  
    public function yourfunction() { 
        //Validate the response
    }
}   
?>