我有一个ajax和php计数功能,如果我在两个页面都使用了$ _SESSION ['counter']那么它的工作正常但是当我使用$ _POST ['counter']然后它不起作用时,请帮助我哪里出错了,这是我的代码。
的index.php
<input type="button" id="button" value="Click me!" />
<div id="counter" style="color:#F00;"><?php
if(isset($_POST['counter'])){
$_POST['counter'];
}
else {
echo $_POST['counter'] = 0;
} ?>
</div>
<script type="text/javascript" src="jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#button').on('click', function(){
$.ajax({
url: 'count.php',
data: {counter: true},
type: 'POST',
dataType: 'JSON',
success: function(response) {
$('#counter').text(response);
}
});
});
});
</script>
count.php
if(!isset($_POST['counter'])) {
$_POST['counter'] = 0;
}
if(isset($_POST['counter'])) {
$_POST['counter']++;
echo json_encode($_POST['counter']);
}
答案 0 :(得分:3)
你总是传递相同的东西,data: {counter: true},
如果你想要每次点击,计数器增加,你必须将它存储在表格隐藏价值或你在会话中提到。
$(document).ready(function(){
var count = 0;
$('#button').on('click', function(){
count++;
$.ajax({
url: 'count.php',
data: {counter: count},
type: 'POST',
dataType: 'JSON',
success: function(response) {
$('#counter').text(response);
}
});
});
});
<强>更新强>
在count.php
中,我们必须只显示count
而不是再次增加:
if(isset($_POST['counter'])) {
echo json_encode($_POST['counter']);
}
但是如果你的代码依赖于服务器进程,我的意思是如果你增加了一些情况,如果有东西,那么更好地增加php的数量,并在成功调用count
后在javascript中存储返回ajax
供以后使用。
更新2:
这很简单,你的count.php
看起来应该是这样的:
$count = 0;
if(isset($_POST['counter'])) {
$count = intval($_POST['counter']);
}
/**
* Here you can increase counter,
* if you'd like to do it on server side
*/
$count++;
$response = array(
'count' => $count,
'displayText' => 'Counter value: '.$count
);
echo json_encode($response);
和javascript:
$(document).ready(function() {
var count = 0;
$('#button').on('click', function() {
/**
* So you increase count here or in php
*/
count++;
$.ajax({
url: 'count.php',
data: {counter: count},
type: 'POST',
dataType: 'JSON',
success: function(response) {
count = parseInt(response.count);
$('#counter').text(response.displayText);
}
});
});
});