首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用php从mysql中捕获数据,通过ajax发送到js并填表。

用php从mysql中捕获数据,通过ajax发送到js并填表。
EN

Stack Overflow用户
提问于 2012-06-23 04:12:08
回答 3查看 794关注 0票数 0

我已经开始做一个很大的项目了。概念: Some1向mysql插入数据。其他人在他们的屏幕(表)上实时获取数据我有我的代码工作,但我是用php填充表,据我所知,这不利于带宽,所以我试图用php代码从mysql中捕获数据,将其发送到js,然后js会格式化/填充表(setinterval正在运行)。但是我的桌子没人坐了,我也没办法了。我是js的新手,所以如果你发现任何错误,请让我知道!谢谢!

PHP:

代码语言:javascript
复制
<?php
$rows = array();
$con = mysql_connect("where","who","pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("dbname", $con);
$result = mysql_query("SELECT * FROM Brokers");
$rows = array();
while($r = mysql_fetch_assoc($result)){
    $rows[] = $r;
}
mysql_close();
print json-encode($rows);
?>

JS:

代码语言:javascript
复制
    function fetchData()
{
    $.ajax({
         url: 'brokers.php',
        dataType: 'json',
        success: createTable(rows)
    })

}
function createTable(rows)
{
    var flowTable = '<table id="resultTable">'
    for (var i=0; i< rows.length; i++){
        flowTable += '<tr class="filterthis height20">',
        flowTable += '<td class="companyname width120">',
        flowTable += rows[i].company_name + '</td>',
        flowTable += '<td class="width180">' ,
        flowTable += rows[i].address + '</td>',
        flowTable += '<td class="width70">' ,
                .........SOME MORE...........
        flowTable += '</tr>';
    }
    flowTable += '</table>';
    $("#here").innerHTML = flowTable;
}
function starttimer(){
  interval = setInterval("fetchData()",1000);
}

starttimer();

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-04 03:42:44

我找到了一个解决方案。

对脚本JS的更正:

代码语言:javascript
复制
function fetchData(){
    $.ajax({
        url: 'brokers.php', //where are we sending request
        dataType: 'json',
        success: createTable //where are we transfering data from php ajax request
    })
}

var createTable = function(data){
    rows = jQuery.parseJSON(data) //creates object from information sent from php
    $.each(rows, function(key,value){  //for each row from php does things You want
        $("#Somediv").html = value.owner_name
        //and etc.
    }
}

brokers.php:

代码语言:javascript
复制
$con = mysql_connect();    
if (!$con) {
   die('Could not connect: ' . mysql_error());
}

mysql_select_db('somedb');
$result = mysql_query("SELECT * FROM sometable WHERE something=66");
while($row= mysql_fetch_assoc($result)){ //for each row which = our $result query
   $rows[]=$row;
}

echo json_encode($rows);
mysql_close($con);
票数 0
EN

Stack Overflow用户

发布于 2012-06-23 04:14:36

您的json-encode是带下划线而不是破折号的json_encode

还可以使用:

代码语言:javascript
复制
interval = setInterval(fetchData, 1000);

而不是:

代码语言:javascript
复制
interval = setInterval("fetchData()",1000);
票数 1
EN

Stack Overflow用户

发布于 2012-06-23 04:19:55

一个问题是,您实际上将“成功”处理程序设置为“未定义”。这是因为您有success: createTable(rows),它实际调用函数并将其返回值(“未定义”)设置为处理程序。

取而代之的是,你需要更多的东西,比如:

代码语言:javascript
复制
success: function(data) {
    createTable(data);
}

当然,由于处理程序(我认为)将数据作为第一个参数传递,您可以通过以下方式完成相同的操作:

代码语言:javascript
复制
success: createTable
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11163430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档