2011-04-14 64 views
0

可能会更容易看这个小提琴:http://jsfiddle.net/pkAGz/process.php代码如下所示:JQuery Ajax表单提交仍然是静态的,我不明白为什么!

<?php 
//Retrieve form data. 
//GET - user submitted data using AJAX 
//POST - in case user does not support javascript, we'll use POST instead 
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name']; 
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email']; 

//flag to indicate which method it uses. If POST set it to 1 
if ($_POST) $post=1; 

//Simple server side validation for POST data, of course, 
//you should validate the email 
if (!$name) $errors[count($errors)] = 'Please enter a name.'; 

//if the errors array is empty, send the mail 
if (!$errors) { 

$name = $name[array_rand($name)]; 

$to = '$name <$name email adress if set>'; 
//sender 
$from = $name . ' <' . $email . '>'; 

//subject and the html message 
$subject = 'Comment from ' . $name; 
$message = ' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head></head> 
<body> 
<table> 
    <tr><td>Name</td><td>' . $name . '</td></tr> 
    <tr><td>Email</td><td>' . $email . '</td></tr> 
</table> 
</body> 
</html>'; 

//send the mail 
$result = sendmail($to, $subject, $message, $from); 
//echo "\n\n$name has been nominated to make the tea!\n\n"; 
//echo "\n\nThey will also be notified by e-mail if you entered their address.\n\n"; 
//if POST was used, display the message straight away 
if ($_POST) { 
    if ($result) echo "\n\n$name has been nominated to make the tea!\n\nThey will also be notified by e-mail if you entered their address.\n\n"; 
    else echo 'Sorry, unexpected error. Please try again later'; 

//else if GET was used, return the boolean value so that 
//ajax script can react accordingly 
//1 means success, 0 means failed 
} else { 
    echo $result; 
} 

//if the errors array has values 
} else { 
//display the errors message 
for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>'; 
echo '<a href="index.php">Back</a>'; 
exit; 
} 


//Simple mail function with HTML header 
function sendmail($to, $subject, $message, $from) { 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
$headers .= 'From: ' . $from . "\r\n"; 

$result = mail($to,$subject,$message,$headers); 

if ($result) return 1; 
else return 0; 
} 
?> 

一旦AJAX请求工作,下一步是简单地解决代码的电子邮件发送到如果他们的电子邮件地址被输入,选择的人 - 有点卡住如何做到这一点,因为我希望电子邮件字段保持可选。

很明显,我想要返回随机挑选的人的名字,那就是了!

感谢,

马丁

+0

我不明白这个问题。如果电子邮件为空白,您只需从数据库或文件中选择电子邮件,或者输出错误或其他内容......如果您选择了随机人员,只需使用html响应返回即可。而已。 $ errors [count($ errors)] - 有趣的,但奇怪的方法来填充数组。为什么不在填充之前定义数组,然后执行$ array [] ='new value'; ? – Nemoden 2011-04-14 11:48:47

+0

抱歉,如果我不清楚,bascially会发生什么,当你点击'submit'按钮时,浏览器会将你带到'process.php'而不是来自调用它的索引页面上的'process.php'的输出。 。 – martincarlin87 2011-04-14 11:54:13

回答

1

使用Firefox的Firebug,或看在Chrome/Safari浏览器的控制台。所以,你会看到,你有一个JavaScript错误:

Uncaught ReferenceError: comment is not defined 

所以脚本:

//cancel the submit button default behaviours 
return false; 

不执行和形式,通常公布。

+0

谢谢,那是一个愚蠢的错误。在取出违规行后,JS会抛出process.php引起的警报返回0 - 任何想法? – martincarlin87 2011-04-14 12:18:41

+0

因为您的sendmail函数可能返回0.是否发送电子邮件?也许你的邮件设置不正确。 – dioslaska 2011-04-14 12:47:12

+0

是的,邮件肯定发送 - 我收到他们,但错误仍然由于某种原因抛出。 – martincarlin87 2011-04-14 12:52:18