首页 > 解决方案 > 即使名称正确,变量也无法从选择选项中获取值

问题描述

所以我正在制作一个分配程序,其中在我的数据库中,我有一组文档,当我想将它标记给一个人时,我会选择我将它标记给谁。这是将人员分配给文档的代码。

<select name="staff" value="staff" align="left" onchange="senddocu(this)">
    <option selected value="">Staff</option>
    <option name='chief' value='chief'>Chief User</option>
    <option name='user' value='user'>User 1</option>
</select>

现在,我在从我的 PHP 代码中的另一个文件中获取值时遇到了问题。不知何故,它不会从我的选择选项中获取值。这是我的选择选项的参数。而且,我之前的代码和这个代码只在一个文件中。

<select name="document" align="left">
<option selected disabled value="">Document Type</option>
                            <option value="A">A</option>
                            <option value="C">C</option>
                            <option value="CO">CO</option>
                            <option value="Curr">Curr</option>
                            <option value="Scholarship">Scholarship</option>
                            <option value="MIS">MIS</option>
                            <option value="Fax">Fax</option>
                            <option value="E-mail">E-mail</option></select>

<input type="text" name= "datenow" id = "copy" align="center">
<input type="text" name="application" align="center" size = "3%">

这是从中获取值的代码。这是在另一个文件中。

<?php
$document_type= mysqli_real_escape_string($conn, $_POST['document']);
$application_no= mysqli_real_escape_string($conn, $_POST['application']);
$today = mysqli_real_escape_string($conn, $_POST['datenow']);

echo $document_type;
echo $application_no;
echo $today;
?>

问题是,只有$today变量获取它的值。其余的不会从另一个文件存储到变量中。这根本没有意义。所有名称都是正确的,但它没有获取它。我的第一个文件中已经有了 ajax 代码:

function senddocu(sel)
{
 $.ajax({   
    type: "POST",
    data: {staff: $(sel).val()},
    url: "send.php",             
    dataType: "html",            
    success: function(response)
    {                    
        $("#responsecontainer").html(response); 
        console.log(response);
    }

}); 
}   

如何获取值?

标签: phpajaxhtml-select

解决方案


您没有使用正确的方法来获取<select>AJAX 请求中的值。您需要为选择指定一个 ID 或名称,以便获得正确的元素。然后,您向它询问选定的选项值。为了获取输入字段变量,您可以按名称选择它们,也可以按 id 选择它们。我只是按名称来做,因为这就是您在示例代码段中所拥有的。

使用 id 的示例:

function senddocu()
{
 $.ajax({   
    type: "POST",
    data: {
            staff: $("#sel option:selected").val(),
            datenow: $("input#datenow").val(),
            application: $("input#application").val()
          },
    url: "send.php",             
    dataType: "html",            
    success: function(response)
    {                    
        $("#responsecontainer").html(response); 
        console.log(response);
    }

  }); 
}

此示例采用具有 id sel 的选择的选定值。为了完成这项工作,您只需为您的选择提供正确的 id。

像这样:

<select name="document" id="sel" align="left" onchange="senddocu();">
   <option selected disabled value="">Document Type</option>
   <option value="A">A</option>
   <option value="C">C</option>
   <option value="CO">CO</option>
   <option value="Curr">Curr</option>
   <option value="Scholarship">Scholarship</option>
   <option value="MIS">MIS</option>
   <option value="Fax">Fax</option>
   <option value="E-mail">E-mail</option>
</select>

<input type="text" name= "datenow" id = "copy" align="center">
<input type="text" name="application" align="center" size = "3%">

使用名称获取值的示例:

function senddocu(sel)
{
   $.ajax({   
     type: "POST",
     data: {
        staff: $("select[name=document] option:selected").val(),
        datenow: $("input[name=datenow]").val(),
        application: $("input[name=application]").val()
     },
     url: "send.php",             
     dataType: "html",            
     success: function(response)
     {                    
        $("#responsecontainer").html(response); 
        console.log(response);
     }       
  });
}

如果输入变量位于完全不同的文件中,则您将不得不重新考虑您要实现的目标,并且可能围绕它重新设计您的逻辑,无论是否真的有原因。您还应该考虑在您的问题中包含更连贯的代码,以便人们可以了解整个情况并测试代码。这样就容易多了。


推荐阅读