2012-10-13 27 views
1

我有一個表格我的網頁上:在同一頁上阿賈克斯在同一個頁面發送空值

<form id="extended-search" > 
<div class="input-container"> 
<select class="select" name="sex" id="sex"> 
<option value="0">All</option> 
<option value="1">M</option> 
<option value="2">F</option> 
</select> 
</div> 
<input type = "button" class="searchButton" value = "Show" onClick="submitSearch();"> 
<img id="loading" src="img/ajax-loader.gif" alt="working.." /> 
</form> 

和jQuery代碼:

function submitSearch() { 
     var submitSearchData = jQuery('#extended-search').serialize(); 
     var selectedValue='<?php echo $_POST['sex'];?>' ; 
     jQuery.ajax({ 
      type: "POST", 
      data: submitSearchData, 
      url: "feed.php", 
      success: function() { 
      alert(submitSearchData); 
      alert(selectedValue); 
      } 
     }); 
    } 

一切工作(第一警報的回報,例如,sex = 1,但第二個是空的)罰款,但是$_POST['sex']是空的。我一直想:

要使用:

jQuery(document).ready(function(){ 

    jQuery('.searchButton').click(function(){    
     submitSearch(); 
    }); 
}); 

要刪除:從AJAX url: "feed.php",

要:data: {sex: submitSearchData},

添加和AJAX改變dataType

但是一切仍然是一樣的。 $_POST['sex']仍然是空的。如何在同一頁面上通過AJAX傳遞$_POST var($_POST['sex'])

+0

爲什麼你用AJAX使用內聯PHP呢? – elclanrs

+0

你談論var selectedValue ='<?php echo $ _POST ['sex'];?>';?添加這個僅用於測試,以快速查看此變種。 –

+0

您是否能夠正常工作? –

回答

0

使用此代碼用於獲取所選擇的選項

var selectedValue=$('#sex').val(); 

由於您沒有提交表單,並因爲這個你沒有得到$_POST['sex']值。您必須使用jqueryjaavscript獲取當前選定的選項。

+0

我有其他頁面上的simillar代碼工作正常。當我使用。序列化()我得到了所有在窗體中選擇的值,但問題我不能通過它在同一頁上。 –

0

這條線:

var selectedValue='<?php echo $_POST['sex'];?>'; 

不會對你似乎期望它做什麼。當按鈕被單擊時(兩次,但稍後更多),纔會調用submitSearch()函數。當你的PHP POST到你的PHP,JavaScript沒有得到執行(因爲沒有點擊事件),當你的JavaScript被調用時,$_POST['sex']沒有設置任何東西。

你可以得到PHP返回在JavaScript這樣的內容:

jQuery.ajax({ 
    type: "POST", 
    data: submitSearchData, 
    url: "feed.php", 
    success: function(data) { 
     alert("response from PHP: " + data); 
    } 
}); 

因此,如果您feed.php看起來是這樣的:

<?php 
if(isset($_POST['sex'])): 
    switch ($_POST['sex']) { 
     case 0: 
      echo "You didn't select anything"; 
      break; 
     case 1: 
      echo "You selected male"; 
      break; 
     case 2: 
      echo "You selected female"; 
      break; 
    } 
else: 
?> 
// all your HTML 
<?php endif; ?> 

那麼alert會回來與response from PHP: You selected male(或You didn't select anythingYou selected female),具體取決於選擇的內容。

既然你已經綁定點擊使用jQuery的按鈕,在<head>你的HTML應該只是:

<input type = "button" class="searchButton" value = "Show" /> 

否則它會調用submitSearch()兩次。

+0

我忘了說,是的,我得到如果(isset($ _ POST ['sex']))檢查器,它說var是空的。是的,我打電話給我的腳本一次,我會說我嘗試不同的方式,但仍然是相同的結果。 –

+0

@DmitryAntonenko您是否試圖確保您的PHP能夠正確地查看您的AJAX POST提交的'