我在提交时遇到此错误,它确实正常发送但未通知用户已发送。
document.getElementById(update [0])为null
<script language="javascript">
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sendemail() {
var msg = document.contactform.msg.value;
var name = document.contactform.name.value;
var email = document.contactform.email.value;
var subject = document.contactform.subject.value;
document.contactform.send.disabled=true;
document.contactform.send.value='Sending....';
http.open('get', 'contact.php?msg='+msg+'&name='+name+'&subject='+subject+'&email='+email+'&action=send');
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();
if(response.indexOf('|') != -1) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}
</script>
contact.php
if(!isset($_GET['action']))
{
die("You must not access this page directly!");
}
$name = trim($_GET['name']); //The senders name
$email = trim($_GET['email']); //The senders email address
$subject = trim($_GET['subject']); //The senders subject
$message = trim($_GET['msg']); //The senders message
mail($to,$subject,$message,"From: ".$email."");
echo 'response|Thank you '.$name.',
?>
答案 0 :(得分:3)
编辑,对于更新的问题: Your site appears to work对我来说,请确保使用 Ctrl + F5 清除缓存你还有问题。
您的if()
支票有点偏,这是:
if(response.indexOf('|' != -1)) {
应该是:
if(response.indexOf('|') != -1) {
目前你得到了误报,if
里面的代码甚至不应该执行......但它们是:)
答案 1 :(得分:0)
update
行前getElementById
的价值是多少?使用console.log
或等效项来查看数组是否包含您期望的内容。
答案 2 :(得分:0)
这意味着无论你在responseText中返回什么,都不是你想要的。
如果你要回来了
“updatePanel | my message”
您需要在页面上添加以下内容:
<div id="updatePanel">your message will go here</div>
因此,请通过警告或检查responseText来检查您的返回值。 Firebug会帮助你。