php ajax count函数无法正常工作

时间:2014-05-05 09:18:22

标签: php jquery ajax

我有一个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']);
}

1 个答案:

答案 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);
            }
        });
    });
});