2015-07-20 89 views
2

我想要使用Jquery在相同的表單中檢索不同選擇的所有選項。順便提一下,主要目標是回顧提交的結果。 的情況是類似的東西:如何檢索Jquery中所有表單選擇的所有選項?

<form id="myform" action="result.php" method="post"> 
    <select id="select1" name="select[]"> 
    <option value="A1">1</option>...</select> 
    <select id="select2" name="select[]"> 
    <option value="A1">1</option>...</select><input type="submit"></form> 

在result.php,還有這個功能:

if (!empty($_POST['select'])) { 

    $selects = array(); 

    foreach ($_POST['select'] as $check) { 
     $selects[] = $check; 

    } 
    if(count($selects)==0){ 
    echo "ERROR";}else{echo "OK"} 
} 

我怎樣才能顯示一個警告,以result.php的回波的結果,有形式的頁面?

+1

這看起來像無效的HTML。你的身份證不能是這個。請驗證它,修復它,然後重試。 –

+0

您可以使用選擇 '選項:選擇',像這樣: $( '選項:選擇')。每個(函數(){ 警報($(本).VAL()); }); –

+0

我想要獲得選擇的所有選項的所有選項! –

回答

1

它花了一些破譯,我假設你需要保持你的選擇通用。我沒有使用無效的select[]命名,而是通過jQuery檢索了所有<select>。不知道這是否符合法案。

如果您需要保留它們的名字爲select[],我建議您查看Get values from multiple select boxes with same name? Including its value with jquery and php以及下面的解決方案。

HTML

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#mySubmitAjax').click(function(e) { 
       var selects = $('select'); 
       var selects_results = ""; 

       selects.each(function(i,v) { 
        selects_results += i + '=' + $(v).val() + '&'; 
       }); 

       $.ajax({ 
        url: 'result.php', 
        method: 'POST', 
        data: selects_results, 
        success: function(data, status, jqXHR) { 
         alert(data); 
        } 
       }) 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form name="myForm"> 
     <select> 
      <option value="1">one</option> 
      <option value="2">two</option> 
     </select> 

     <select> 
      <option value="1">one</option> 
      <option value="2">two</option> 
     </select> 

     <button type="button" id="mySubmitAjax">Submit w/AJAX</button> 
    </form> 
</body> 
</html> 

result.php

<?php 
    $post = $_POST; 
    $results = []; 

    foreach($post as $p) { 
     $results[] = $p['v']; 
    } 

    print json_encode($results); 

?> 
+0

謝謝!有用 !你認爲這是一個很好的解決方案嗎?我的意思是,使用這個解決方案,我可以使用Android,Windows Phone,iOs e web平臺,使用相同的result.php文件! –

1

執行PHP代碼時,您再次位於服務器端。等。無論您構建HTML輸出,這是在那裏你可以,例如,包括由PHP創建了一個腳本標籤,它確實是這樣的:

<script> 
    alert("<?php echo $selectResults; ?>"); 
</script> 

這是可怕的難以維護(你不應該有PHP代碼混淆了這在你的HTML輸出中),但是因爲我不知道你是如何創建你的頁面的,所以我希望你明白。

理解執行代碼的位置非常重要,並且由於您在PHP(即服務器端),因此沒有直接的方法將JavaScript警報「發送」回客戶端(在此忽略WebSockets) 。

另一種方法是通過AJAX將結果發佈到服務器,獲取服務器的響應(「ERROR」,「OK」或其他),並在您的AJAX回調中使用它來提醒消息。再一次,因爲我不知道你是如何建立你的網頁,我不知道哪個更可行。

+0

使用jquery,我可以發送帖子並將結果返回並顯示警告。問題是要發佈到result.php的數據在表單內。 –

+0

好的,所以「我怎樣才能在頁面中顯示一個警報,其結果是result.php,你實際上已經知道了?我不明白你的問題。如果您發送POST,所有內容都會在PHP端的'$ _POST'內出現,您可以在其中檢查值,返回所需的任何結果,並顯示警報。其實,我不認爲你可以有兩個同名的select標籤'select []',可能應該是'select1 []'和'select2 []'。 – stef77

相關問題