2015-07-20 39 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

相关问题