2013-09-03 8 views
4

Я новичок в PHPкак запустить функцию PHP без перезагрузки страницы

<?php 
    getDBData(){ 
     //log the call 
     $fetchedData = myDbCode.fetchData(); 
     return 
    } 
    ?> 
    <script type="text/javascript"> 
     dbData = <?php echo json_encode(getDBData()); ?> 
    </script> 

Как отмечается в журнале, что getDBData дозвонились только один раз во время загрузки страницы, а позже даже dbData = <?php echo json_encode(getDBData()); ?> этого кода вызова до getDBData() не происходит.

Любая идея, почему вызов getDBData() происходит только при загрузке страницы и не thenafter

Как звонить getDBData() из яваскрипта

+1

U должны использовать Ajax для этого использовать JQuery http://api.jquery.com/jQuery.ajax/ –

+1

С просьбой Ajax. –

+3

Есть [много дубликатов] (http://stackoverflow.com/search?q = call + php + function + in + javascript) - пожалуйста, найдите перед отправкой – SmokeyPHP

ответ

14

Вы на самом деле не понимают, как это работает.

Javascript - это клиентский язык, что означает, что он выполняется в веб-браузере. PHP - это серверная сторона, которая означает, что он выполняется на сервере.

При обработке запроса выполняется первый PHP, что ответ возвращается пользователю, а затем выполняется Javacript.

Для связи между клиентом и сервером вы можете использовать запросы ajax, которые в основном простые HTTP-запросы, но без перезагрузки всей страницы.

+0

Да, это так же, как Java JSP + JavaScript. Все языки программирования почти одинаковы в основных логиках. Спасибо, Драгосте и всем остальным – veer7

-7

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

также вам нужно вернуть значение из функции, например.

<?php 
    getDBData(){ 
     return myDbCode.fetchData(); 
    } 
?> 
+0

Что это должно делать? Почему это волшебным образом позволяет PHP запускать клиентов? –

+0

нет. PHP выполняется только на сервере SERVER END. вы не можете вспомнить функцию php после загрузки страницы. Для этой цели используется AJAX. –

8

Вы должны использовать Ajax для этого. То есть у вас есть файл PHP, который возвращает вывод функции:

// data.php 
<?php 
    function getDBData(){ 
     //log the call 
     $fetchedData = myDbCode.fetchData(); 
     return $fetchedData; 
    } 
    echo getDBData(); 
?> 

// html file 
<script type="text/javascript"> 
    var getDBData = function(callback) { 
     $.ajax({ 
      url: "data.php" 
     }).done(callback); 
    } 
    var dbData = <?php echo json_encode(getDBData()); ?> 
    getDBData(function(data) { 
     dbData = data; 
    }) 
</script> 

Код выше использует jQuery.

+0

Это гораздо более конструктивный ответ, который фактически отвечает на вопрос. –

0

использование JQuery

$.ajax({ 
      url: 'yourpage.php', 
      type: 'POST', 
      data:'', 
      success: function(resp) { 

      // put your response where you want to 

      } 
     }); 
0

Вы не можете непосредственно вызывать функции PHP от JavaScript.

Вы должны «передать аутсорсинг» getDBDate в собственный .php-файл, где вы выводите строку json_encoded и вызываете этот файл с помощью ajax и получаете вывод страницы.

Легче всего сделать AJAX запросы в JavaScript, чтобы использовать JQuery библиотеки: http://api.jquery.com/jQuery.ajax/

0

вы можете использоваться AJAX для прибудете на стороне сервера PHP vaue в Javascript переменной читать этот АЯКС пример и реализовать его.

  // Launch AJAX request. 
      $.ajax(
       { 
        // The link we are accessing. 
        url: jLink.attr("href"), 

        // The type of request. 
        type: "get", 

        // The type of data that is getting returned. 
        dataType: "html", 

        error: function(){ 
         ShowStatus("AJAX - error()"); 

         // Load the content in to the page. 
         jContent.html("<p>Page Not Found!!</p>"); 
        }, 

        beforeSend: function(){ 
         ShowStatus("AJAX - beforeSend()"); 
        }, 

        complete: function(){ 
         ShowStatus("AJAX - complete()"); 
        }, 

        success: function(strData){ 
         ShowStatus("AJAX - success()"); 

         // Load the content in to the page. 
         jContent.html(strData); 
        } 
       }       
       ); 

      // Prevent default click. 
      return(false);      
     } 
     ); 
+1

Он даже не понимает идею клиентской и серверной сторон, и вы даете ему 20-строчный код jQuery с запросом ajax? Это не так. –

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