Php 我的AJAX帖子以一个文件的HTML作为响应
我的问题是一个复杂的问题,我会在问题的最后分析它。我已经创建了一个站点,并将其设置为/view中的每个.php文件在/controller中都应该有一个同名的.php。通过这种方式,我有两个home.php、两个login.php等。我创建了一个AJAX调用,以便将一些数据传输到php index.phpPhp 我的AJAX帖子以一个文件的HTML作为响应,php,ajax,Php,Ajax,我的问题是一个复杂的问题,我会在问题的最后分析它。我已经创建了一个站点,并将其设置为/view中的每个.php文件在/controller中都应该有一个同名的.php。通过这种方式,我有两个home.php、两个login.php等。我创建了一个AJAX调用,以便将一些数据传输到php index.php <?php session_start(); $all_url = explode('?', $_SERVER['REQUEST_URI']); $url = explode('/',
<?php
session_start();
$all_url = explode('?', $_SERVER['REQUEST_URI']);
$url = explode('/', $all_url[0]);
//Homepage
if (empty($url[1])) {
$url[1] = 'frontpage';
}
//DB connect
$config = array(
'host' => 'xxx', //CHANGE THIS, DB SERVER
'user' => 'xxx', //CHANGE THIS, DB USER
'password' => 'xxx', //CHANGE THIS, DB PASSWORD
'database' => 'xxx' //CHANGE THIS, DB NAME
);
$DB = new PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['database'], $config['user'], $config['password']);
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$DB->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$DB->exec("SET names utf8");
if (file_exists('controller/' . $url[1] . '.php')) {
$gtpl = 'main';
$restricted = array('cart');
if (!isset($_SESSION['firstVisit']) && $url[1]!='frontpage') {
$_SESSION['firstVisit'] = false; //ensures we never enter this clause again
require 'controller/frontpage.php';
}else if (empty($_SESSION['uid']) && in_array($url[1], $restricted)) {
//not logged in, but trying to access restricted page.
require 'controller/login.php';
}else{
require 'controller/' . $url[1] . '.php';
}
require 'view/' . $gtpl . '.php';
} else {
echo 'ERROR - File not found!!!';
}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<meta name="description" content="">
media="screen"/>
"My styles"
</head>
<body>
<div class="container">
<?php require 'view/frontend/'.$tpl.'.php';?>
</div>
"My .js scripts"
</body>
由于我的index.php,我不需要url:'home.php',但这会产生一个问题:我无法针对特定的文件,例如位于/controller中的home.php。每当我写url:'home.php'或url:'controller/home'时,我都会在index.php的末尾得到错误-“'error-File not found!!!”;”。当我现在将url保留在main.js中时,我会得到home.php的整个HTML代码的响应,该代码位于view和main.php中。我似乎不明白这是怎么发生的。有办法修复吗?您可以覆盖
index.php
中的功能。例如,在ajax请求中发送另一个参数,如,custom=true
....
url: 'home.php?custom=true',
....
在index.php中
.....
if (!isset($_SESSION['firstVisit']) && $url[1]!='frontpage') {
$_SESSION['firstVisit'] = false; //ensures we never enter this clause again
require 'controller/frontpage.php';
}else if (empty($_SESSION['uid']) && in_array($url[1], $restricted)) {
//not logged in, but trying to access restricted page.
require 'controller/login.php';
}else{
require 'controller/' . $url[1] . '.php';
}
$path = (empty($_GET["custom"])) ? 'view/' . $gtpl . '.php' : $gtpl;
require $path;
..........
上述代码需要在ajax url中指定的确切url。您可以在ajax请求中使用自定义参数,并在
index.php
中覆盖当前功能。更多细节请参见我的答案
.....
if (!isset($_SESSION['firstVisit']) && $url[1]!='frontpage') {
$_SESSION['firstVisit'] = false; //ensures we never enter this clause again
require 'controller/frontpage.php';
}else if (empty($_SESSION['uid']) && in_array($url[1], $restricted)) {
//not logged in, but trying to access restricted page.
require 'controller/login.php';
}else{
require 'controller/' . $url[1] . '.php';
}
$path = (empty($_GET["custom"])) ? 'view/' . $gtpl . '.php' : $gtpl;
require $path;
..........