PHP + Jquery - 通过ajax将值传递给php并检查变量

时间:2010-11-18 18:10:46

标签: php jquery ajax

我无法使用以下PHP + jQuery - 所有我希望脚本执行的操作是通过ajax传递值,并让php抓住它,检查匹配并添加1来获得分数。

这是我写的代码:

<?php
$score = "1";

$userAnswer = $_POST['name'];

if ($_POST['name'] == "145"){
    $score++;
}else{
    //Do nothing
}

echo $score;

?>


<script type="text/javascript">

$(document).ready(function() {

    $("#raaagh").click(function(){

    var value = "145";

    alert(value);

    $.ajax({
        url: 'processing.php', //This is the current doc
        type: "POST",
        data: ({name: value}),
        success: function(){
            location.reload();
       }
    });


    });
});

</script>

<p id="raaagh">Ajax Away</p>

感谢您的帮助,我在两个实例中都将GET更改为POST,没有任何乐趣 - 还有其他错误。

5 个答案:

答案 0 :(得分:17)

首先:不要回到黑暗时代......不要使用相同的脚本来生成HTML并响应ajax请求。

我无法理解你想要做什么......让我改变你的代码,这样至少可以理解并记录正在发生的事情。似乎问题在于您从成功处理程序调用location.reload。

// ajax.php - 如果name参数是145则输出2,否则输出1(????)

<?php
$score = "1";    
$userAnswer = $_POST['name'];    
if ($_POST['name'] == "145"){
    $score++;
}       
echo $score;    
?>

// test.html

<script type="text/javascript">  
$(document).ready(function() {    
    $("#raaagh").click(function(){    
        $.ajax({
            url: 'ajax.php', //This is the current doc
            type: "POST",
            data: ({name: 145}),
            success: function(data){
                // Why were you reloading the page? This is probably your bug
                // location.reload();

                // Replace the content of the clicked paragraph
                // with the result from the ajax call
                $("#raaagh").html(data);
            }
        });        
    });
});

</script>

<p id="raaagh">Ajax Away</p>

答案 1 :(得分:2)

你在jQuery中使用POST,但是你试着在你的php中获得GET。

BTW最好在读取之前检查是否设置了GET / POST变量。 使用isset()函数。

答案 2 :(得分:0)

$_GET替换为$_POST,您就在那里。 基本上POST和GET是将变量传递给脚本的两种不同方式。 php中的get方法也可以附加在url的末尾:script.php?variable=value,它很容易入侵。虽然post方法可以使用表单或ajax调用提交,但它非常安全,至少比get更多。 另外我建议你在调用它之前检查GET或POST变量是否设置,以便你可以防止愚蠢的通知错误。

只需使用以下代码:

if (isset($_POST['var']) and !empty($_POST['var'])) { // do something } 

您也可以删除

}else{
// do nothing
}

脚本的一部分,因为else子句不是必须的。

答案 3 :(得分:0)

您使用Ajax POST提交数据,但尝试从GET中读取数据。在Ajax调用中使用type: "GET"或在PHP中使用$_POST['name']

答案 4 :(得分:0)

问题是你使用jQuery来发布你的值,但是你正在用GET读它。

您应该可以通过将$ _GET ['name']更改为$ _POST ['name']来解决您的问题