php - 即使名称正确,变量也无法从选择选项中获取值
问题描述
所以我正在制作一个分配程序,其中在我的数据库中,我有一组文档,当我想将它标记给一个人时,我会选择我将它标记给谁。这是将人员分配给文档的代码。
<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);
}
});
}
如何获取值?
解决方案
您没有使用正确的方法来获取<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);
}
});
}
如果输入变量位于完全不同的文件中,则您将不得不重新考虑您要实现的目标,并且可能围绕它重新设计您的逻辑,无论是否真的有原因。您还应该考虑在您的问题中包含更连贯的代码,以便人们可以了解整个情况并测试代码。这样就容易多了。