我正在建立一个jquery移动网站,并在这里发现了一个精彩的javascript片段来发布表单并将网站重定向回主页。我遇到的问题是它没有显示已发送电子邮件中的称呼,即使它在表单中显示并在网站上显示为下拉列表,以及显示“MR' MR'当向下箭头点击“先生”时。按钮。以下是javascript和表单。我们将非常感激地提供任何帮助。
JAVASCRIPT
<script type="text/javascript">
function setReqObj() {
var nAjax;
if(window.XMLHttpRequest) {
nAjax = new XMLHttpRequest();
} else {
nAjax = new ActiveXObject("Microsoft.XMLHTTP");
}
return nAjax;
}
function _SubmitForm() {
var xmlhttp = setReqObj();
if(xmlhttp) {
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState == 4) {
document.forms["contact-form"].reset();
$responseText = xmlhttp.responseText;
alert("Your query has been successfully submitted!");
document.location.href = "#home";
}
}
var $validEmail = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
var $name = document.forms["contact-form"]["Full_Name"].value;
var $comments = encodeURIComponent(document.forms["contact-form"]["Query"].value);
var $name2 = document.forms["contact-form"]["Phone"].value;
var $email = document.forms["contact-form"]["Email"].value;
if($name == "") {
alert("Please enter a valid name!");
return false;
}
if($comments.length <= 4) {
alert("Please enter a valid comment!");
return false;
}
if($name2 == "") {
alert("Please enter a valid phone number!");
return false;
}
if(!$email.match($validEmail)) {
alert("Please enter a valid email address!");
return false;
}
var $ajData = "Full_Name=" + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email;
xmlhttp.open("POST", "http://www.test.uk.com/cgi-bin/cgiemail/emailform2.txt", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send($ajData);
} else {
document.forms["contact-form"].submit();
}
}
</script>
FORM
<fieldset data-role="ui-field-contain">
<div class="controlgroup">
<legend>Enquiry Form</legend><br>
<select name="salutation" id="salutation" >
<option value="Mr">Mr</option>
<option value="Mrs">Mrs</option>
<option value="Ms">Ms</option>
<option value="Miss">Miss</option>
</select>
<br>
<label for="fullname">Full name:</label>
<input type="text" name="Full_Name" id="fullname" />
<label for="query">Query:</label>
<textarea name="Query" id="query"></textarea>
<label for="phone">Phone Numbers:</label>
<textarea name="Phone" id="phone" ></textarea>
<label for="email">Email:</label>
<input type="text" name="Email" id="email" />
</div>
</fieldset>
- &GT;
</form>
非常感谢, Ruwak
答案 0 :(得分:1)
您没有随请求发送所选的称呼值。您需要捕获该值,然后将其附加到请求的其余部分:
var $salutation = document.forms["contact-form"]["salutation"].value;
然后根据服务器端代码,将其包含在名称中:
var $ajData = "Full_Name=" + $salutation + " " + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email;
或将其包含为单独的查询字符串参数:
var $ajData = "Full_Name=" + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email + "&Salutation=" + $salutation;
答案 1 :(得分:1)
您没有从表单中选择称呼的价值,我认为这就是您没有在电子邮件中收到它的原因。首先,选择称呼的价值:
var $salutation = document.forms["contact-form"]["salutation"].value;
现在,将此值添加到您通过ajax发送的数据中:
var $ajData = "Salutation=" + $salutation + "&Full_Name=" + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email;
现在,您应该在服务器上获得Salutation
的值。您还需要确保在服务器端还将此值附加到已发送的电子邮件中。