2013-07-02 19 views
4

как бы я идти об использовании значения PHP в JQuery, что я делаю, потянув скорость чан из базы данных с помощью PHP следующим образом и хранить в $ vatrate:Используя значение Php в JQuery скрипт

$sqlv = <<<SQL 
SELECT * 
FROM `vatrate` 
WHERE id='1' 
SQL; 
if(!$resultv = $db->query($sqlv)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 
while($rowv = $resultv->fetch_assoc()){ 
    $vatrate = $rowv['vatrate']; 
} ?> 

Затем у меня есть сценарий jQuery, который объединяет все итоговые строки и помещает их в диапазон.

<script> 
$(document).ready(function() { 
    $('input').on('keyup', function() { 
     var rawValue, grandtotal = 0; 
     $('span[id^="linetotal"]').each(function(i, elem) { 
      rawValue = $.trim($(this).text()); 
      if (rawValue == '') rawValue = 0; 
      grandtotal += parseFloat(rawValue); 
     }); 
     $('#grandtotal').text(grandtotal); 
    }); 
}); 
</script> 

Но теперь им не уверен, как ссылаться на значение $ vatrate объявленного в PHP в JQuery, так что я могу получить цену + НДС. НДС - это налог с продаж для всех, кто не в Великобритании :).

ответ

10

На вашей странице PHP в код javascript/jquery вы можете сделать что-то вроде этого, чтобы присвоить переменную PHP переменной javascript (NB вы не можете сделать oppisite, потому что PHP - это серверная сторона, а javascript - клиентская):

<script> 
    var vatrate = '<?php echo($vatrate);?>'; 
</script> 
+2

Чтобы быть ясным, на странице PHP вы можете это сделать. JavaScript и jQuery не позволяют делать это по умолчанию. +1 хотя. – Patrick

+0

спасибо за точность @PatrickHulce –

+0

Спасибо большое, просто исправить! :-) –

0

Просто эхо PHP, где вы хотите значение для проживания в сценарии ...

<?php $bar = "bar"; ?> 
<script> 
var foo = "<?php echo $bar; ?>"; 
alert(foo); // bar 
</script> 

Однако, вы никогда не должны слишком сильно полагаться на JavaScript без надлежащих откатов.

0

Если вы повторяете переменную в Javascript, вы можете опустить кавычки и использовать ее как float, что будет означать, что переменная Javascript является поплатой и будет готова работать для вычисления. Кастинг в качестве поплавка также предотвратит любую возможность сценариев Cross Site Scripting (XSS).

<script> 
var vatRate = <?php echo (float)$vatrate; ?>; 

$(document).ready(function() { 
    $('input').on('keyup', function() { 
     var rawValue, grandtotal = 0; 
     $('span[id^="linetotal"]').each(function(i, elem) { 
      rawValue = $.trim($(this).text()); 
      if (rawValue == '') rawValue = 0; 
      grandtotal += parseFloat(rawValue); 
     }); 

     // add the vat to the grandtotal 
     // assuming vatRate is 20 for 20%, not 0.2 
     grandtotal += (grandtotal * (vatRate/100)); 
     $('#grandtotal').text(grandtotal); 
    }); 
}); 
</script> 
Смежные вопросы