在我的index.php文件中,我有一个AJAX函数,它将在另一个php文件中调用一个函数,该文件应该递增一个数字并在我调用AJAX函数时返回它。
问题是这个数字永远不会改变。我尝试了很多不同的东西。很遗憾,列出它们太多了。
我的index.php文件。
<?php
session_start();
$_SESSION['views'] = 0;
?>
<?php include 'blogFunction.php';?>
<script type="text/javascript">
function doSomething()
{
$.ajax({ url: '/blogFunction.php',
data: {action: 'test'},
type: 'post',
success: function(output) {
document.getElementById("blog").innerHTML = '';
document.getElementById("blog").innerHTML = output;
}
});
}
</script>
<div class ="blog" id = "blog"></div>
我的blogFunction.php
<?php
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'test' : blogreturn();break;
}
}
function blogreturn(){
$_SESSION['views'] = $_SESSION['views']+ 1;
echo "THIS number is:" .$_SESSION['views'];
}
?>
现在每当我点击调用AJAX函数的按钮时,输出总是为'。'
任何帮助表示感谢。
直播代码:here
到目前为止,谢谢大家的帮助。一个问题是,出现了一个新问题。
扩展功能:
session_start();
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'test' : blogreturn();break;
}
}
function blogreturn(){
$request_url = "http://retrovate.tumblr.com/api/read?type=posts";
$xml = simplexml_load_file($request_url);
$a = $_SESSION['views'];
$b = $_SESSION['views'] +4;
echo "A = ".$a;
echo "B = ".$b;
$_SESSION['views'] = $_SESSION['views']+ 1;
for ($i = $a; $i <= $b; $i=$i+1) {
echo '<h2>'.$xml->posts->post[$i]->{'regular-title'}.'</h2>';
echo '<br>';
echo $xml->posts->post[$i]->{'regular-body'};
echo '<br>';
echo '<br>';
}
}
这里的问题是,我在my site
点击我的按钮一次并递增并显示新内容。我再次点击它又恢复为0.如果我快速点击按钮很多次,它似乎工作。看起来Chrome有这个问题而Firefox不是。
答案 0 :(得分:2)
将session_start();
添加到blogFunction.php
答案 1 :(得分:0)
您需要在blogFunction.php文件中调用session_start()。必须在向浏览器输出任何内容之前调用它。可能最好的情况是在脚本中首先调用它。
答案 2 :(得分:0)
这是正常运行的代码...... 的index.php
<?php
session_start();
$_SESSION['views'] = 0;
?>
<!doctype html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js" />
<body>
<div class ="blog" id = "blog"></div>
<input type="button" value="Add to the count!" id="call_ajax"/>
<script type="text/javascript">
$('#call_ajax').click(function () {
$.ajax({ url: '/blogFunction.php',
data: {action: 'test'},
type: 'post',
success: function(output) {
document.getElementById("blog").innerHTML = '';
document.getElementById("blog").innerHTML = output;
}
});
});
</script>
</body>
blogFunction.php
<?php
session_start();
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'test' : blogreturn();break;
}
}
function blogreturn(){
$_SESSION['views'] = $_SESSION['views']+ 1;
echo "THIS number is:" .$_SESSION['views'];
}
?>
请注意,我没有在index.php文件中包含blogFunction.php!这很重要。
你拥有它的另一种方式是,每次加载页面时都将变量设置为0,这就是调用函数的方式(如果你使用控制台调用它)。
我添加了一个按钮供您点击通过Ajax调用该功能(根据原始问题中的条件)。
希望有所帮助!
答案 3 :(得分:-3)
我认为你应该首先取消设置$_SESSION['views']
而不是再写一次。
function blogreturn(){
$temp = $_SESSION['views'];
unset($_SESSION['views']);
$_SESSION['views'] = $temp + 1;
echo "THIS number is:" .$_SESSION['views'];
}