在jQuery ajax调用之后将SQL数据恢复为JavaScript

时间:2011-06-08 09:36:06

标签: php javascript jquery ajax

我是ajax(通过jQuery)和JavaScript的新手。我想要的是定期(和异步)执行一个PHP脚本来获取一些SQL数据。但是我会在JavaScript图表中显示这些数据,所以我需要它来回到我的JavaScript中。

我在JavaScript中尝试了一个嵌入式PHP脚本,将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 个答案:

答案 0 :(得分:3)

我认为你正在混淆你的概念。 PHP仅在Web服务器上运行。 Javascript在客户端(即Web浏览器)上运行

如果您创建的页面的.php扩展名与ajax.php一样,则会从您的网络服务器提供一次,其中包含<?php ?>块中的a的所有内容都将是由服务器解析 - 它不是动态的。

结果页面包含来自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 

答案 1 :(得分:0)

HI我不认为你可以直接做到这一点....如果你想在PHP和JS之间来回传递数据你需要使用xml http请求..你可以找到一个非常好的教程,它将帮助你很多...... 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"); 
?>