我是pjax初学者,不确定我实现它的方式是否正确。我有一个带有很多jquery的旧项目。为了组织它,我遵循的方法是,为每个页面的主体<body id="Login">
分配一个唯一的ID。在我的布局中,我编写了代码:
var page = $('body').attr('id');
if(page !== '' && typeof self[page] != 'undefined')
self[page].init();
对于特定于页面的jquery,我写过这样的东西:
var Login = (function() {
var funct = {};
//any variables, only required on this page
funct.someFunction = function(){
//code
}
funct.init = function(){
//all the functions that are to be called on page load
}
return funct;
})();
现在,在每个页面加载时,只执行页面上所需的代码。但是,我现在正在创建pjax链接的大部分链接。因此,在登录页面上,有一个链接:
<a data-pjax href="/register">Register</a>
并且布局包含代码:
$(document).pjax('a[data-pjax]', '#pjax-container');
这将打开注册页面。但是,由于正文ID仍为“登录”,因此未加载 Register.init()。
我如何解决这个问题?
答案 0 :(得分:1)
我从未使用过pjax但是根据他们的文档,你可以在页面更改完成后添加一个事件监听器来运行一些代码
event.target
您应该可以使用<?php
//Create connection credentials
$db_host = 'localhost';
$db_name = '';
$db_user = '';
$db_pass = '';
//Create mysqli object
$mysqli = new mysqli ($db_host, $db_user, $db_pass, $db_name);
//Error Handler
if($mysqli->connect_error){
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
<?php
//Set question number
$number = (int) $_GET['n'];
/*
* Get Question
*/
$query = "SELECT * FROM `questions`
WHERE question_number = $number";
//Get result
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$question = $result->fetch_assoc();
?>
做一些事情,这应该是被点击的链接,以便弄清楚新页面是什么。