выполнить JavaScript перед возвратом в PHP - PullRequest
0 голосов
/ 10 июня 2010

У меня есть собственный скрипт 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 ]

5 голосов
/ 10 июня 2010

Вы должны переосмыслить свой подход. PHP и JavaScript работают на разных компьютерах и обмениваются данными через протокол запросов / ответов без сохранения состояния.

Любой PHP-скрипт должен выполняться полностью перед запуском JS.

Передача данных между ними может происходить только тогда, когда клиент делает HTTP-запрос.

Вы не можете выполнить любой JavaScript, который должен запускаться на клиенте, кроме клиента.

0 голосов
/ 10 июня 2010

Относительно вашего кода:

 if(!$Error){

(Я предполагаю, что $ Error - это тип возврата вашей почтовой функции. Если нет, не обращайте внимания на это сообщение и дайте мне знать, чтобы я мог снять его).

Возвращает TRUE, если почта была успешно принята для доставки, иначе FALSE.

Важно отметить, что если почта была принята для доставки, это НЕ> означает, что почта действительно достигнет назначенного пункта назначения.

PHP.net: электронная почта (строка $ to, строка $ subject, строка $ message)

Не полагайтесь на возвращаемое значение mail (), только если вы хотите проверить, было ли отправлено письмо.

0 голосов
/ 10 июня 2010
file_get_contents("http://your-server/project-path/php/captcha/captchaimage_show.php?".random(1,100));

Решит вашу проблему

chears !!!

0 голосов
/ 10 июня 2010

Я бы сказал, что основная проблема - отправка почты через AJAX.Вы должны сделать обычный POST, а затем перезагрузить всю страницу с новой капчей.Другим возможным решением было бы отправить почту через AJAX, а затем вернуть «true» в ответе AJAX.Или даже верните новую капчу в ответе и измените ее с помощью jQuery.Но я не знаю, будет ли это работать с вашей системой кодирования.

...