我有一个自定义的PHP脚本,用于验证验证码并发送电子邮件。如果php脚本成功发送邮件,则返回“true”。这可以通过以下方式完成:
if(!$Error){
echo "true";
exit;
}
在返回true之前,我想执行一个应该刷新验证码图像的jQuery命令。我不应该这样做是客户端,因为从垃圾邮件发送者的角度来看可能存在风险。
要刷新验证码图像,命令为:
jQuery('#captcha').attr('src', ('php/captcha/captchaimage_show.php?' + Math.random()));
我需要在php脚本中调用此命令,然后通过“echo”返回任何结果
PRASHANT
答案 0 :(得分:5)
您需要重新考虑您的方法。 PHP和JavaScript在不同的计算机上运行,并通过无状态请求/响应协议进行通信。
任何PHP脚本必须在JS运行之前完整运行。
只有在客户端发出HTTP请求时,才能在它们之间传递数据。
除了在客户端之外的任何地方,您都无法执行任何需要在客户端上运行的JavaScript。
答案 1 :(得分:0)
我想说主要问题是通过AJAX发送邮件。您应该进行常规POST,然后使用新的验证码重新加载整个页面。另一种可能的解决方案是通过AJAX发送邮件,然后在AJAX响应中返回“true”。或者甚至在响应中返回新的验证码并使用jQuery进行更改。但我不知道它是否适用于您的验证码系统。
答案 2 :(得分:0)
file_get_contents("http://your-server/project-path/php/captcha/captchaimage_show.php?".random(1,100));
将解决您的问题
CHEARS !!!
答案 3 :(得分:0)
关于您的代码:
if(!$Error){
(我猜测$ Error是你的邮件功能的返回类型。如果没有,请忽略这篇文章,让我知道所以我可以把它取下来。)
如果邮件成功接受传递,则返回TRUE,否则返回FALSE。
重要的是要注意,仅仅因为邮件被接受传递,它不会>意味着邮件实际上将到达预定目的地。
PHP.net:bool mail ( string $to , string $subject , string $message)
仅当您要检查电子邮件是否已发送时,请勿依赖mail()返回值。