在php中返回之前执行javascript

时间:2010-06-10 08:21:41

标签: php jquery captcha

我有一个自定义的PHP脚本,用于验证验证码并发送电子邮件。如果php脚本成功发送邮件,则返回“true”。这可以通过以下方式完成:

if(!$Error){
      echo "true";
      exit;
    }

在返回true之前,我想执行一个应该刷新验证码图像的jQuery命令。我不应该这样做是客户端,因为从垃圾邮件发送者的角度来看可能存在风险。

要刷新验证码图像,命令为:

jQuery('#captcha').attr('src', ('php/captcha/captchaimage_show.php?' + Math.random()));

我需要在php脚本中调用此命令,然后通过“echo”返回任何结果

PRASHANT

4 个答案:

答案 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()返回值。