2013-09-10 3 views
0

Я хочу получить значение $ security_code, которое находится в файле captchaCode.php, в файле captchaa.php через javascript.I не могу включить этот файл в файл captcha.php. Вот код Captcha_code.php и этот код не приходит внутри любой функции из этого файла:Как получить переменную php в javascript

$captcha = new CaptchaCode(); 
$security_code = str_encrypt($captcha->generateCode(6)); 

А вот мой Javascript функция, с помощью этой функции я хочу, чтобы получить значение $ безопасности:

function refresh_captcha() 
{ 
    var img = document.getElementById('captcha_img'); 
    img.src = '<?php echo "/captcha_images.php"?>'; 
    jQuery("#captcha_img").attr("src",img.src); 
    jQuery("#security_code").val("<?php echo $security_code;?>"); 
} 

На самом деле этот код предназначен для получения нового зашифрованного значения, когда captcha обновляется без обновления страницы.

+0

вам необходимо использовать ajax. –

+2

Зачем вам выводить статическую строку с php? Почему бы просто не написать строку в JavaScript? – elclanrs

+0

Переменная должна присутствовать в текущем файле, поэтому вам необходимо включить ее. В противном случае вам нужно отправить запрос в .php-файл и использовать ответ, который ему задан. –

ответ

1

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

function refresh_captcha() 
{ 
    var img = document.getElementById('captcha_img'); 
    img.src = '/captcha_images.php'; 
    jQuery("#captcha_img").attr("src",img.src); 
    /*This line will not work without Ajax request*/ 
    /*jQuery("#security_code").val("<?php echo $security_code;?>");*/ 
} 
+0

Это всегда даст тот же код. – Starx

+0

@Starx nope. с каждым запросом, другим кодом. – itachi

+0

@itachi, Нет, javascript не может общаться с PHP. Он будет иметь только первое значение, которое он первоначально получает. – Starx

0

В вашем PHP файл captcha.php,

$captcha = new CaptchaCode(); 
    $security_code = str_encrypt($captcha->generateCode(6));?> 
    <script> 
     var code = '<?= $security_code ?>'; 
    </script><?php // rest of the php codes 

В ваших JS файл

function refresh_captcha() 
{ 
    var img = document.getElementById('captcha_img'); 
    img.src = code; 
    jQuery("#captcha_img").attr("src",img.src); 
} 
+0

не работает. Сейчас не отображается изображение безопасности. – user2746093

0

Отправить запрос Ajax на страницу для вывода только кода, как :

Файл: outputcode.p л.с. (демо только)

$captcha = new CaptchaCode(); 
$security_code = str_encrypt($captcha->generateCode(6)); 
echo $security_code; 
exit; 

Далее, возьмите это значение с помощью AJAX, как, например, в JQuery

$("#refresh_code").on('click', function() { 
    $.get("outputcode.php", function(data) { 
     //data will now hold the new code 
    }); 
}); 

Надеется, что это дает вам идею.

+0

ajax здесь излишне. если вы хотите изменить изображение, достаточно изменить атрибут img src со случайной строкой. – itachi

+0

его выдающая ошибка, что $ не определено. Если я использую jQuery вместо $, тогда agian его дает ошибку, что jQuery не определен ... – user2746093

+0

@ user2746093. Сначала вам нужно включить библиотеку jQuery. – Starx

0

Если вы не можете включить файлы, вам необходимо использовать запрос ajax.

captcha.php

$captcha = new CaptchaCode(); 
$security_code = str_encrypt($captcha->generateCode(6)); 
echo json_encode($security_code); 

в ваших ЯШАХ:

<img src="" id="captcha_img" onclick="refresh_captcha()"/> 
<script> 

    function refresh_captcha() 
{ 
    $.ajax({ 
     url : 'captcha.php', 
     type : 'POST', 
     dataType : 'json', 
     success : function (security_code) { 
      var source = security_code; 
      var img = document.getElementById('captcha_img'); 
      img.src = source; 
      jQuery("#captcha_img").attr("src",img.src); 
      jQuery("#security_code").val(source); 
     } 
    }); 

} 
</script> 

Событие OnClick на IMG может быть совершенно неправильно, но для целей физических упражнений, я положил его туда.

В зависимости от того, что такое $ security_code, вы можете, например, не использовать JSON.

+0

Теперь ее не освежает изображение captcha – user2746093

+0

Как оно должно обновиться? Он обновляется при щелчке по изображению в этом примере. –

+0

m щелкнув по изображению, но не обновляя captcha – user2746093

Смежные вопросы