簡體   English   中英

使用Ajax在表中顯示PHP腳本中的數據

[英]Display data from php script in a table using ajax

我希望通過php腳本運行一些查詢來顯示數據,然后使用ajax將其顯示在html頁面上。

我有一個PHP腳本,它以json格式回顯來自sql查詢的數據。 輸出看起來像這樣:

{"Username":"Server","RICS":12739,"Exclusive_RICS":0}{"Username":"eikon1","RICS":4,"Exclusive_RICS":0}{"Username":"balbla","RICS":552,"Exclusive_RICS":0}{"Username":"somename","RICS":221,"Exclusive_RICS":201}

我想使用$ .ajax調用顯示此數據。

我做了一些研究,並提出了:

$(document).ready(function(){

$.ajax({

    url : 'query.php',
    type : 'POST',
    data : {
        //'numberOfWords' : 10
    },
    dataType:'json',
    success : function(data) {              
        window.alert(data.Username)
    },
    error : function(request,error)
    {
        alert("Request: "+JSON.stringify(request));
    }
});

});

但是,它不能正常工作。 我剛收到以下警報:

在此處輸入圖片說明

我是js / ajax / php的新手,所以如果我錯過了一些簡單的事情,請原諒。

任何幫助表示贊賞。 謝謝!

編輯:

php code:

    $sql = 'select * from table';

$retval = sqlsrv_query($conn,$sql);
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}


while( $row = sqlsrv_fetch_array( $retval, SQLSRV_FETCH_ASSOC) ) {
    echo json_encode($row);
}

sqlsrv_free_stmt($retval);
//echo "Fetched data successfully\n";
sqlsrv_close($conn);

編輯2:設法通過此操作以正確的JSON格式獲取php的輸出。 現在只需要使用ajax來顯示它。

while( $row = sqlsrv_fetch_array( $retval, SQLSRV_FETCH_ASSOC) ) {
    $rows[] = $row;
}
echo json_encode($rows);

遍歷SQL結果集並分別回顯每一行會產生無效的JSON格式。 相反,您應該json_decode整個SQL結果集。

您可以按照以下方法更新PHP代碼,以輸出正確的格式:

php代碼:

$sql = 'select * from table';

$retval = sqlsrv_query($conn,$sql);
if(! $retval ) {
  die('Could not get data: ' . mysql_error());
}

echo json_encode( sqlsrv_fetch_array( $retval, SQLSRV_FETCH_ASSOC) );

sqlsrv_free_stmt($retval);
//echo "Fetched data successfully\n";
sqlsrv_close($conn);

AJAX success回調中可能還需要執行另一步。 您將需要JSON.stringify結果,因為PHP會將其作為純文本發送回:

success : function(data) {              
    var result = JSON.stringify( data );
    window.alert(result.Username)
}, 

感謝大家的幫助。 我最終能夠找出問題所在。

  • 首先,正如用戶指出的那樣,我的json格式不正確。 我通過編輯中的解決方案解決了該問題。
  • 其次,我必須直接用正確的地址引用我的php。 我認為這與從同一服務器運行查詢有關。 不能完全確定。
  • 第三,我嘗試了一個普通的ajax調用,即使失敗了。 原來我的瀏覽器(chrome)需要清理。 我清除了cookie,它開始工作正常。 為什么表現奇怪? 我不知道!
  • 最后,現在我需要以表格式顯示數據並經常更新表。 我仍在與之合作,但這就是我現在想要的:

     $(document).ready(function() { (function poll() { $.ajax({ url : 'http://localhost/scripts/query.php', type : 'POST', data : {}, dataType:'json', success : function(response) { var json_obj = $.parseJSON(JSON.stringify(response)); var output=""; for (var i in json_obj) { output+="<tr>"; output+="<td>" + json_obj[i].time.date + "</td>" + "<td>" + json_obj[i].username + "</td>" + "<td>" + json_obj[i].rics + "</td>" + "<td>" + json_obj[i].exclusive_rics +"</td>"; output+="</tr>"; } $('#table_content').html(output); }, error : function(request,error) { alert("Request: "+JSON.stringify(request)); } , dataType: "json", complete: setTimeout(function() {poll()}, 5000), timeout: 2000 }) })(); 

    });

我真的不明白為什么這么難做到。 我確信這是一個常見的情況,並且我真的希望有一種更直接的方法。 希望我的最終代碼可以避免其他人浪費大量時間。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM