2010-11-18 161 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 [「名」]解決您的問題