所以我有3个文件。Header.php, script.js和load_more.php。header .php是网站上正常的头页,script.js是一个被调用并发出ajax请求的文件。Load_more.php是脚本在script.js中调用的PHP文件。
header.php:我得到页面Id($ school官方Id),并把它放入javascript变量中,在script.js ajax数据:
<?php
// There is more code to this but I do get the page ID and put it into $schoolOfficialId so this does work
$shcoolOfficialId = $specificSchool[0]["id"];
?>
<!--Down in the <head> of the DOM where scripts get included-->
<script type="text/javascript">
var schoolId = <?php Print($shcoolOfficialId); ?>
</script>
<script type="text/javascript" src="js/script.js"></script>
script.js: ajax调用的地方。第二个ajax请求可以,但第一个ajax有点困惑我想把js变量schoolId推到load_more。php
// execute an ajax query to push id of page to load_more.php
$.ajax({
url: 'load_more.php',
type: 'POST',
data: {schoolId:schoolId},
success:function(data){
}
});
// execute an ajax query to load more statements
$.ajax({
url: 'load_more.php',
type: 'POST',
data: {last_id:last_id, limit:limit},
success:function(data){
// now we have the response, so hide the loader
$('#loader').hide();
// append: add the new statments to the existing data
$('#items').append(data);
// set is_loading to false to accept new loading
is_loading = false;
}
});
load_more.php:因为我的应用程序越来越大,我需要做开关语句,所以这就是为什么我需要js变量schoolId给我带来当前页面id或$ school官方id在header.php php代码:注意:我不想包括load_more.php到我的DOM,所以它是一个独立的php文件:
// including the config file
require('config.php');
//pdo connct for config.php file
$pdo = connect();
var_dump($schoolId);
//this var dump returns NULL
switch ($schoolId) {
case 1:
echo "first school";
break;
case 2:
echo "second school";
break;
default:
//this default ends up happening because the $schoolId is NULL
echo "no school";
break;
}
您的schoolId
实际上是null
,因为您不能在JS中回显php值(就像您所做的一样)。我建议你使用一个隐藏的输入字段在你的html和回显的值在输入的value
属性,然后得到使用jQuery的值。
<!-- In your html code -->
<input type='hidden' id='schoolOfficialId' value='<?php echo $schoolOfficialId; ?>' />
然后,您可以获得该输入的值如下:
<script type="text/javascript">
$(function(){
var schoolId = $('#schoolOfficialId').val(); //now you do have the value of the schoolOfficialId variable here.
});
</script>
注意$(function() ...
行,这意味着脚本将在文档准备好后加载
首先要做的是确保数据到达php脚本。
在你的load_more.php
中这样做:
$school_id = $_POST[schoolId];
var_dump($school_id);
冲洗并重复last_id
。
接下来,如果您使用相同的php脚本执行不同的操作,您可能需要稍微调整一下逻辑,并考虑使用以下方法:
在每个ajax调用你发送到php脚本包括至少两个参数,一个叫做"动作"或类似的,这将在你的开关情况下使用。
另一个"value"或类似的,可以是你的id。
如果需要,您可以添加更多,例如限制和偏移量。
ajax调用示例:
$.ajax({
url: 'load_more.php',
type: 'POST',
data: {param:schoolId,action:"initialCall"},
});
$.ajax({
url: 'load_more.php',
type: 'POST',
data: {param:last_id, limit:limit,action:"loadMore"},
});
示例php脚本
// including the config file
require('config.php');
//pdo connct for config.php file
$pdo = connect();
// if POST is not set give a default value for $school_id
if (!isset($_POST['school_id'])) $school_id = 1;
else $school_id = $_POST[school_id];
//same for action
if (!isset($_POST['action'])) $action = 'initialCall';
else $action = $_POST['action'];
switch ($action) {
case "initialCall":
//take action for first ajax call;
break;
case "loadMore":
//take action for second ajax call;
break;
default:
//take default action
break;
}