2010-11-18 163 views
4

我无法获得以下PHP + jQuery的工作方式 - 我希望脚本所做的就是通过ajax传递值,并让php抓取它,检查它匹配并添加1得分。PHP + Jquery - 通过ajax将值传递给php并检查变量

这是我写的代码:

<?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

而究竟是什么问题? – 2010-11-18 18:13:53

+0

没有描述问题的问题很难回答。 “它不起作用”不是一个好的描述。 – 2010-11-18 18:27:44

回答

17

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

我无法理解你正在做什么......让我改变你的代码,至少让它有意义,并记录下正在发生的事情。看起来问题在于你正在从你的成功处理程序调用location.reload。

// ajax.php - 输出2如果名称参数为145,否则为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> 
+0

你刚刚为我节省了一大笔头痛 - 我仍然在使用自加载的东西,所以这不是错误 - 但是其他任何改变都修复了它。谢谢! – Richard 2010-11-18 19:36:56

+1

“无论发生什么变化”都是因为您现在没有为ajax调用输出页面的html部分。 – 2010-11-18 20:19:22

2

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

顺便说一句,在读取它之前检查GET/POST变量是否设置是一个好习惯。 使用isset()函数。

0

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

只需使用下面的代码:

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

您也可以删除脚本的

}else{ 
// do nothing 
} 

一部分,因为else子句没有必要总是如此。

0

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

0

问题是你正在使用jQuery发布你的价值,但你正在阅读与GET。

您应该能够通过更改$ _ GET [“名”]到$ _ POST [“名”]解决您的问题