Opencart:使用 ajax 请求响应制作单独的登录页面
Opencart: make separate login page using ajax request response
我在 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);}
}
?>
您需要声明 ControllerAccountResponse class 并扩展 Controller。此外,您可以从 OpenCart 中的 url 调用函数。将 url 更改为 index.php 并使用路由参数找到正确的控制器。路由参数前两项是目录和文件,第三项是你要调用的函数。
查看:
<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
}
}
?>
我在 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);}
}
?>
您需要声明 ControllerAccountResponse class 并扩展 Controller。此外,您可以从 OpenCart 中的 url 调用函数。将 url 更改为 index.php 并使用路由参数找到正确的控制器。路由参数前两项是目录和文件,第三项是你要调用的函数。
查看:
<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
}
}
?>