我有一个通过电子邮件发送几个输入字段的联系表单,但我很难找到从下拉列表中检查值的正确方法。
HTML
<label for="email"><span>E-mail:</span>
<input type="email" name="email" id="email" placeholder="Your e-mail" />
</label>
<label for="phone"><span>Tlf:</span>
<input type="text" name="phone" id="phone" placeholder="Your number" />
</label>
<label for="service"><span>Service:</span>
<select class="service" id="service">
<option value="choose">Choose</option>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
</select>
</label>
PHP
if(!isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userService"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Fields are empty'));
die($output);
}
所以我使用$ _POST进行下拉操作时出错了吗?
编辑:
这是我的jquery
var user_name = $('input[name=name]').val();
var user_email = $('input[name=email]').val();
var user_phone = $('input[name=phone]').val();
所以我想我错过的是:
var user_service = $('select[name=service]').val();
答案 0 :(得分:2)
您的代码存在一些问题。
您的代码/发布的问题中似乎没有<form></form>
个标记,添加;它们没有出现在你的问题中,所以目前还不确定你是否使用它们。
您的表单应为method="post"
,包括操作。即:action="handler.php"
您的<select>
未命名。
与条件语句相比,您使用了错误的POST变量:
这是您目前使用的:
if(!isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userService"]))
看看这个:
<input type="email" name="email" id="email" placeholder="Your e-mail" />
和
<input type="text" name="phone" id="phone" placeholder="Your number" />
关于它们如何与条件语句不匹配。
他们需要根据修改的条件语句的变量进行匹配:
if(!isset($_POST["email"]) || !isset($_POST["phone"]) || !isset($_POST["userService"]))
修改/命名您的选择时的:
<select class="service" id="service" name="userService">
<强> N.B:强>
现在,如果未示出的 PHP代码的其余部分使用相同的POST变量,那么它们都需要匹配我在此处发布的内容。你需要这样做,因为我不知道代码的其余部分是什么样的。
如果您的其余PHP代码使用这些POST变量$_POST["email"]
$_POST["phone"]
$_POST["userService"]
,那么您需要将输入更改为:
<input type="email" name="userEmail" id="email" placeholder="Your e-mail" />
和
<input type="text" name="userPhone" id="phone" placeholder="Your number" />
同时保留现有的条件声明:
if(!isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userService"]))
使用error reporting后会发出Undefined index
警告信号。
将错误报告添加到文件顶部,这将有助于生产测试。
error_reporting(E_ALL);
ini_set('display_errors', 1);
答案 1 :(得分:0)
您的<select>
代码没有name
属性。
请修改代码:
<label for="service"><span>Service:</span>
<select class="service" id="service" name="userService">
<option value="choose">Choose</option>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
</select>