0

私はかなり大きなプロジェクトに取り組み始めました。コンセプト: Some1 は mysql にデータを挿入します。他の人は自分の画面 (テーブル) でデータをライブで取得します。コードは機能していましたが、php でテーブルを埋めていましたが、帯域幅には適していないことを理解しているため、php コードで mysql からデータを取得しようとしています。それをjsに送信すると、テーブルがフォーマット/入力されます(setintervalが実行されています)。しかし、私のテーブルはいっぱいではなく、アイデアがありません。私はjsが初めてなので、何か間違っていることがあれば教えてください! ありがとう!

PHP:

<?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:

    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();

4

3 に答える 3

1

あなたがjson_encode持っているのはダッシュではなくアンダースコアですjson-encode

以下も使用します。

interval = setInterval(fetchData, 1000);

それ以外の:

interval = setInterval("fetchData()",1000);
于 2012-06-22T20:14:36.100 に答える
0

One problem is that you're essentially setting your "success" handler to "undefined". This is because you have success: createTable(rows) which is actually calling the function and setting its return value ("undefined") as the handler.

Instead, you will want something more like:

success: function(data) {
    createTable(data);
}

Of course, since the handler is (I think) passed the data as the first argument, you could accomplish the same thing via:

success: createTable
于 2012-06-22T20:19:54.707 に答える
0

さて、私は解決策を見つけました。

スクリプト JS の修正:

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.
    }
}

ブローカー.php:

$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);
于 2012-08-03T19:42:43.993 に答える