2015-10-16 2 views
1

У меня есть класс php, который устанавливает значения и обновляет их. Я использую методы getters для доступа к этим переменным из функции javascript и показываю их на экране. Моя проблема в том, что когда я запускаю этот код javascript, мои вары отображаются всегда с первыми значениями, которые они получают. Я проверил их, и они обновлены, когда я вызываю myCreateFunction();, но похоже, что эта функция запускается до обновления php vars. Я новичок в javascript, и некоторая помощь будет оценена, спасибо!php vars обновляются, но функция javascript показывает всегда первое значение

<?php  
    class TableRows { 

     public $offerId = 0; 

     public function setOfferId(){ 
      $this->offerId ++; 
     } 
     public function getOfferId(){ 
      $this->offerId; 
     } 

    } 

    $tb = new TableRows(); 
?> 
<script> 
    function myCreateFunction(string) { 
     var offerId = '<tr><th>'+<?php echo json_encode($tb->getOfferId()); ?>+'</th></tr>'; 
     var table = document.getElementById("myTable"); 
     var row = table.insertRow(-1); 
     var cell1 = row.insertCell(0); 
     cell1.innerHTML = offerId; 
    } 
</script> 
<script> 
    myCreateFunction(); 
</script> 
<?php 
    $tb->setOfferId(); 
?> 
<script> 
    myCreateFunction() 
</script> 
+0

php - препроцессор страницы html ... он создает страницу и выплевывает ее в ваш браузер ... нет двухсторонней связи, как вы думаете, что вы делаете ... '$ tb-> setOfferId() ; '- это приведет к числу в javascript, функция будет запущена до того, как страница будет загружена ... посмотрите на источник страницы в вашем браузере, чтобы увидеть, что я имею в виду. –

+0

Php can not управляет кодом на уровень клиентской стороны. Вам нужно обрабатывать переменные и изменять их в Javascript. – Dom

ответ

0

Да, потому что myCreateFunction отображается в вашем браузере при повторном вызове. PHP (серверная сторона) не имеет ничего общего с JavaScript (на стороне клиента). Не смешивайте свой код так.

Вместо этого вы можете использовать сеттеры, геттеры, а затем передать значение своей функции JavaScript в качестве параметра.

+0

, так что путь прохождения параметров будет таким: -> $ tb-> setOfferId; $ offerID = $ tb-> getOfferId; user3033437

+0

Да, это способ сделать это. Но я думаю, что вы даже можете переместить свой код на клиентскую сторону, потому что у вас нет (в образце кода) любого кода, который требует от сервера его продолжения. – vitozev

+0

Я делаю несколько запросов sql в своем классе, поэтому я должен использовать vars allready, установленный в php, чтобы передать их javascript, спасибо за ответы! – user3033437

0

У вас возникли проблемы с пониманием того, где вы находитесь в своем коде (в javascript или в php). $tb->setOfferId(); ничего не изменяет в вашем javascript. Таким образом, второй вызов myCreateFunction() будет таким же.

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