Возвращение данных SQL обратно в JavaScript после вызова jQuery ajax - PullRequest
1 голос
/ 08 июня 2011

Я довольно новичок в ajax (через jQuery) и JavaScript.Я хотел бы периодически запускать сценарий php (и асинхронно), который извлекает некоторые данные SQL.Однако я представлю эти данные в графике JavaScript, поэтому мне нужно, чтобы они вернулись в мой JavaScript.

Я попробовал встроенный скрипт php в JavaScript, который помещает данные SQL в массив, а затем просто извлекает саму страницу с помощью вызова .ajax, но это не сработало (хотя я мог видеть вИсточник страницы, что JavaScript был изменен, график не отвечает на изменения):

ajax.php (не работает):

$(function () {        
   function fetchData() {            
   $.ajax('ajax.php');
   <?php        
   try
   {
      $now = time();
      $query = "select * from jet_pressure;"        
      $result = $db->query($query);
      foreach ($result as $row)
      {                                      
         print "d1.push([".$row['timestamp'].",".$row['unknown']."]);";            
      }                                
   }
   catch (Exception $e)
   {
      print 'Exception : '.$e->getMessage();
   }
   ?>           
   $.plot($("#placeholder"), [ d1]);
   setTimeout(fetchData, 5000);
   }    
    setTimeout(fetchData, 500);    
   });       

Какой рекомендуемый способ сделать это?

Ответы [ 2 ]

3 голосов
/ 08 июня 2011

Я думаю, что вы путаете свои концепции.PHP работает только на веб-сервере.Javascript запускается на клиенте (т.е. в веб-браузере)

Если вы создадите страницу с расширением .php, как в вашем ajax.php, она будет обслуживаться с вашего веб-сервера один раз, и все, что на нем содержится,в блоке <?php ?> будет анализироваться сервером - он не динамический.

Результирующая страница содержит проанализированные значения из вашего сценария php, но не самого сценария.

Javascript работает на компьютере пользователя и поэтому обрабатывает взаимодействие с пользователем и события на веб-странице.Вы можете использовать Javascript для вызова серверного скрипта (в данном случае php), когда вам нужно получить данные с сервера.Это в основном то, о чем AJAX.Но, как правило, javascript содержится в файлах, заканчивающихся .js, которые, как правило, не анализируются вашим веб-сервером, если только javascript фактически не включен на вашу страницу, но в наши дни это не совсем то, что нужно делать.

Я понятия не имею, что вы пытаетесь сделать, смешивая JavaScript с php.Это не AJAX.

Я предлагаю вам использовать что-то вроде JSON.Этот грубый php-скрипт сначала скомпилирует ваши результаты в JSON, а затем вызов javascript ajax.Вам нужно будет включить библиотеку JQUERY и сохранить весь скрипт php в виде отдельного файла с именем getdata.php.

<?php
// You'll have to do all the database select stuff here


    while ($Row = mysql_fetch_array($params)) 
{      
    $jsondata[]= array('jsobjectfield1'=>$Row["dbtablefield1"],
        'jsobjectfield2'=>$Row["dbtablefield2"],                       'jsobjectfield3'=>$Row["dbtablefield3"],                      'jsobjectfield4'=>$Row["dbtablefield4"]); 
};  
echo("{\"TableData\": ".json_encode($jsondata)."};");

?>

Javascript:

$.ajax({
    url: 'getdata.php',
    type: "POST",
    data: entereddata,
    dataType: "json",
    timeout: (7000),
    //wait 7 seconds          
    error: function(data)          
    {                     

    }, //end of ERROR handling          
    success: function(data)          
    {  
        // you'll find the data returned here:
    data.jsobjectfield1   
    }; // end of SUCCESS handling 

}); // end AJAXcall 
0 голосов
/ 08 июня 2011

HI Я не думаю, что вы можете сделать это напрямую .... Если вы хотите передавать данные назад и вперед между PHP и JS, вам нужно использовать запрос XML xml ... вы можете найти очень хороший учебник, который поможет вам много здесь ...... http://www.tizag.com/ajaxTutorial/ajaxxmlhttprequest.php надеюсь, что это поможет ... это, безусловно, помогло мне, когда я начинал .... Я пытался сделать то же самое, что вы пытаетесь сделать, а затем я знал, что я пытался смешать серверные и клиентские сценарии

то, что вы делаете здесь, следующее ...

1 передать список параметров в php

2 php выполняет некоторую обработку (в вашей базе данных запросов) и отображает нужные выходные переменные

3, которые возвращаются в JS

Если вы ищете прямой код ... вот, пожалуйста ... кредит идет на сайт, который я упомянул выше, это не мой код ... я действительно рекомендую вам перейти на этот сайт ... вы будете многому научиться за короткое время .... надеюсь, это поможет

<html>
<body>

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function ajaxFunction(){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            document.myForm.time.value = ajaxRequest.responseText;
        }
    }
    ajaxRequest.open("GET", "serverTime.php", true);
    ajaxRequest.send(null); 
}

//-->
</script>



<form name='myForm'>
Name: <input type='text' onChange="ajaxFunction();" name='username' /> <br />
Time: <input type='text' name='time' />
</form>
</body>
</html>

serverTime.php

<?php
echo date("H:i:s"); 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...