2012-10-30 41 views
0

代碼:(index.php):爲什麼PHP忽略ajax POST?

<head> 

<?php 
if(isset($_GET['text1'])) 
{ 
some_function(); 
} 
?> 
</head> 

<body> 
<form id="form"> 
<input type="text" id="text1" name="text1"/> 
<input type="text" id="text2" name="text2"/> 
<input type="submit" id="submit" value="submit"/> 
</form> 

<script> 
$(document).ready(function(){ 

    $("#submit").click(function(){ 
      var dataString=$("form#form").serialize(); 
      var proccessPage="<?php echo $_SERVER['PHP_SELF'] ?>"; 

      alert(dataString); 
      $.ajax({ 
       type: "POST", 
       url: proccessPage, 
       data: dataString, 
       }); 
    return false; 
    }); 


}); 
</script> 
</body> 

誰知道爲什麼some_function();通話不會被觸發?我不知道這個問題是在Ajax,還是在php,或者在哪裏。我花了兩天的時間嘗試使用$.post$.ajax,在代碼等中查找可能的錯誤,但我無法找到任何問題。

你知道嗎?感謝所有的答案。

回答

6

因爲您正在尋找GET而不是POST。你的PHP更改爲以下:

<?php 
if(isset($_POST['text1'])) 
{ 
some_function(); 
} 
?> 

GETPOST是不同類型的HTTP請求,你需要確保你的PHP代碼中尋找合適的一個。有一個相當全面的描述他們之間的差異在這個問題上: What is the difference between POST and GET?

+3

或$ _REQUEST同時捕獲POST和GET類型的請求(和Cookie,悲哀地)。 –

+0

的確如此。儘管如此,我總是覺得使用'$ _REQUEST'有點髒,除非我無法知道我是否應該接收'GET'或'POST'。在99%的情況下,你知道你會得到哪些,並且從兩者接受似乎都會打開不安全感......雖然只是一個念頭 - 可能只是我的偏執狂! – n00dle

+0

它仍然無法正常工作。我以前試過$ _POST和$ _GET,但是好像php只是忽略它。即使我手動嘗試在瀏覽器中打開localhost /?text1 = blabla,它也不起作用。 – 4713n

1

這不會工作無論如何!

原因是您正在製作一個AJAX POSTBACK,它是Asynchronus。

爲了得到你需要什麼,你一定要試試這樣:

<form id="form" action="" method="post"> 

和刪除腳本的一部分。它會工作!

〜Shakir Shabbir

+0

在某種程度上,我同意 - 它可以對重構進行處理,以便PHP塊位於塊之前,如果POST存在,則包含「exit」或「die」。這樣你只會得到函數的結果發送回jQuery ... – n00dle