Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   PHP функция в javascript (https://javascript.ru/forum/events/46346-php-funkciya-v-javascript.html)

Erolast 06.04.2014 20:07

Через обращение к определенному php скрипту по ajax - можно, да. Напрямую - нельзя. php исполняется на сервере, не в браузере клиента, а на сервере, результат его выполнения - html-страница. Клиент обратился к серверу, php скрипт отработал, вывел html-страницу - все, до свидания.

cript 08.04.2014 03:31

Скажите что не так делаю
<script type="text/javascript">
$('#num').bind("keyup change", function(){
var num = $("#num").val();
$.post('ajax.php', {
num: num
},
function (data) {
$("#system_msg").html(data);
}
);
});
</script>
<div id="system_msg"></div>
<input type="text" id="num" value="">

Hapson 08.04.2014 10:30

Цитата:

Сообщение от cript (Сообщение 306451)
Приветствую!
Данный код отображает введенный в инпуте текст на странице.
<input type="number" name="add" id="add" value="100">
<span id="infomsg"></span>
<script>
$('#add').keyup(function(){
var Price = '<?=$price;?>';
var Value = $('#add').val();
var Total = Value * Price;
var Total = '<?=action(Total);?>'; // <-- php функция
$('#infomsg').empty();
$('#infomsg').text(Total);
});
</script>

Есть php функция action, не получается добавить ее в этот код, подскажите что можно сделать?

Мусье знает толк в извращениях... :)
Ученые тоже как-то пытались скрестить свинью с человеком - нихера не вышло... :)
<?=$var ?>
<?php echo $var; ?>

Эти записи эквивалентны, но первая работает не всегда
Если нужно вызвать функцию, то echo не нужно
<?php foo(); ?>

Ну а если извращаться...
<script>
var total = 100;
var total = "<?php action("+ total +"); ?>";
</script>

Ну и естественно php должен выполнять код в этом файле - см. расширение

cript 08.04.2014 13:43

Hapson,
"<?php action("+ total +"); ?>"; - такой вариант не срабатывает, делаю так: "<?=money("+ Total +");?>"; - функция работает, но не считывается переменная..

cript 08.04.2014 15:26

Подскажите как правильно сделать, чтобы при изменении текста отправлялся запрос..? Делаю так но ничего не происходит..

<script type="text/javascript">
$('#num').bind("keyup change", function(){
var num = $("#num").val();
$.post('ajax.php', {
num: num
},
function (data) {
$("#system_msg").html(data);
}
);
});
</script>
<div id="system_msg"></div>
<input type="text" id="num" value="">

nyols 08.04.2014 15:49

Полагаю что вы не правильно передаете данные.

Вместо
{
num: num
}


Надо
{
data: {num: num}
}

cript 08.04.2014 15:59

Цитата:

Сообщение от nyols
{
data: {num: num}
}

Смотрел в браузере данные не передаются..

jsnb 08.04.2014 16:35

Блок со скриптом после HTML элементов поставь. И зачем вешать сразу на keyup и на change? Получается при каждом введенном символе будет отправляться 2 одинаковых запроса.

cript 08.04.2014 17:25

Цитата:

Сообщение от jsnb
Блок со скриптом после HTML элементов поставь. И зачем вешать сразу на keyup и на change? Получается при каждом введенном символе будет отправляться 2 одинаковых запроса.

Как оказалось все решается гораздо проще:
$(document).ready(function(){   
$('input[name=num]').on("keyup paste cut IE9EventFix change", function (){ 
var Total = document.getElementById('num').value;
$.ajax({
type: 'POST',
url: 'ajax.php',
data: "Total=" + Total,
success: function(data) {
$('#infomsg').html(data);
}
});           
});
});

cript 08.04.2014 17:27

Цитата:

Сообщение от jsnb
И зачем вешать сразу на keyup и на change? Получается при каждом введенном символе будет отправляться 2 одинаковых запроса.

Потому что Input type="number"
Делаю так
.on("keyup paste cut IE9EventFix change"...

Посмотрел отправляется один запрос.


Часовой пояс GMT +3, время: 18:28.