我有一个联系表单脚本,我添加了一些字段,与其余字段相同,但是提交的新变量给出了未定义索引的“通知”,并且变量没有填充。我像这样抓住他们的POST,
$name = $_POST['name'];
$website = $_POST['website'];
$company = $_POST['company'];
$addy = $_POST['addy'];
$email = $_POST['email'];
$phone = $_POST['phone'];
名称,电子邮件和电话都有效,但网站,addy和公司都没有。
抓住它的JavaScript看起来像这样,
$.post(action, {
name: $('#name').val(),
email: $('#email').val(),
website: $('#website').val(),
company: $('#company').val(),
addy: $('#addy').val(),
phone: $('#phone').val(),
..etc
这会导致什么?我不确定其他代码会有什么帮助,谢谢。
编辑添加HTML。
以下是HTML中的一些表单代码,我看不到任何错过的内容..
<form method="post" action="send_mail.php" name="contactform" id="contactform">
<fieldset>
<legend>Please fill in the following form to contact us</legend>
<label for=name accesskey=U><span class="required">*</span> Your Name</label>
<input name="name" type="text" id="name" size="30" value="" />
<br />
<label for=email accesskey=E><span class="required">*</span> Email</label>
<input name="email" type="text" id="email" size="30" value="" />
<br />
<label for=website accesskey=W>Website</label>
<input name="website" type="text" id="website" size="30" value="" />
<br />
<label for=company accesskey=C>Company</label>
<input name="company" type="text" id="company" size="30" value="" />
<br />
<label for=addy accesskey=A>Address</label>
<input name="addy" type="text" id="addy" size="30" value="" />
答案 0 :(得分:2)
如果值为false或为空,则帖子将不包括AJAX调用中的那些变量。建议您在PHP中使用isset()
来验证变量是否已设置:
$name = isset($_POST['name']) ? $_POST['name'] : '';
etc...
如果我们在javascript(jQuery)中有以下代码:
$.post('url',{
'foo': 'bar',
'baz': $('#nonexisting_element').val(),
'qux': 'quux'
},...);
#nonexisting_element
不存在,会发送以下内容:
foo=bar&qux=quux
并且在PHP端以下将最终在PHP数组中:
$_POST = array (
'foo' => 'bar'
'qux' => 'quux'
);
答案 1 :(得分:1)
jQuery不发送值为null的post字段。因此,在您的情况下,错误可能是您没有具有给定ID website, addy, ...
的字段。
也许您忘记添加id =“..”属性或忘记在复制旧代码时更改它?