我需要将数据加载到bootstrap模式框中。
第1步:mypage.php(需要config.php
和所有php class
)
require $abspath . '/config.php';
require ABSPATH . '/functions.php';
require ABSPATH . '/class/csrf.php';
require ABSPATH . '/class/mail/PHPMailerAutoload.php';
<div>.......ALL HTML</div>
$(function() {
$('.push').click(function() {
var id = $(this).attr('id');
$.ajax({
type: 'post',
url: '../controller/remotefile.php', // in here you should put your query
data: 'cmid=' + id, // here you pass your id via ajax .
// in php you should use $_POST['post_id'] to get this value
success: function(r) {
// now you can show output in your modal
$('#cm').modal({
backdrop: 'static',
keyboard: false
}) // put your modal id
$('.something').show().html(r);
}
});
});
});
第2步:remotefile.php(需要config.php
和所有php class
再次)
require $abspath . '/config.php';
require ABSPATH . '/functions.php';
require ABSPATH . '/class/csrf.php';
require ABSPATH . '/class/mail/PHPMailerAutoload.php';
if(isset($_POST['cmid'])){
$DB = mysqli::f("SELECT * FROM " . BOOKS . " WHERE id = ?",filter_var($_POST['cmid'], FILTER_VALIDATE_INT));
print_r($DB);
}
对于这种情况,我需要config.php
和所有php class
到每个页面(远程页面和根页面)。
这个为我工作但是当我从远程文件中删除config.php
和所有php class
时,我看到db config的php错误和更多的php错误。
我认为这不是插入config.php
和所有php class
两个页面的好方法。我可以从config.php
删除php class
和所有remotefile.php
,我的脚本是否正常?无论如何?任何想法?
答案 0 :(得分:0)
简短的回答是&#34;不,你不能从config.php
文件&#34;中删除remogefile.php
和php类文件。
config.php
文件中有什么内容?我的猜测是你在那里设置你的数据库,就像告诉PHP你的数据库主机,用户名,密码等。因此,如果您不包含该文件,则它们都未设置,并且您收到数据库错误(请注意,mysqli::f
应该执行查询?)。
您的问题也让我认为您希望config.php
文件已经包含在mypage.php
文件中,并且无需再次要求它。
如果有,请考虑用户访问mypage.php
时发生的请求数。
最初,创建了mypage.php
的第一个请求,文件执行并包含您需要的所有文件,包括config.php
。完成执行后,请求完成,页面将在浏览器中呈现。
该呈现页面中的JS代码初始化了一个新的新请求,其中调用了remotefile.php
。就执行的PHP代码而言,这个新请求与前一个请求无关。因此,还不需要config.php
,因此未配置数据库。
因此,您需要在您发出请求的每个页面中要求这些文件(config.php
和所有类文件)。好吧,我没有看到您使用remotefile.php
文件中包含的任何类,所以非常
我可以想到以下几件事来使php文件干净简洁:
考虑autoloading PHP feature,无需为代码中使用的每个类分别添加require
行。
我还可以建议实施&#34; Single Entry Point&#34;目前所有MVC框架都使用的技术。