我无法使用以下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,没有任何乐趣 - 还有其他错误。
答案 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']来解决您的问题