php - 将 jQuery ajax 中的 json 数据作为新行插入到表中

标签 php json jquery

我一直在尝试从 ajax 查询添加数据,该查询返回以以下模式创建的 json 数据: $lastedited = $_GET['laSTLoad'];

$count = 1;
$JsonArray = Array();


while ($count <= 4) {  // luupataan x määrä ellei vastauksia tule.

$result = mysql_query("SELECT     RFQs.DateAdded as DateAdded,
                              Customers.Name as customer,
                              RFQs.ID as RFQID,
                              Suppliers.Name as supplier,
                              Ships.Name as ship,
                              RFQs.CustomerRef as CustomerRef,
                              Contacts.FirstName as contactF,
                              Contacts.LastName as contactL,
                              Contacts.Email as contactE,
                              Users.tunnus as handler,
                              RFQStatus.Name as status,
                              RFQs.Description
                   FROM       RFQs
                   LEFT JOIN  Ships ON RFQs.ShipID=Ships.ID
                   LEFT JOIN  Contacts ON RFQs.ContactID=Contacts.ID
                   LEFT JOIN  Customers ON RFQs.CustomerID=Customers.idCustomers
                   LEFT JOIN  Users ON RFQs.PriJobHandler=Users.id
                   LEFT JOIN  Suppliers ON RFQs.SupplierID=Suppliers.ID
                   LEFT JOIN  RFQStatus ON RFQs.StatusID=RFQStatus.ID
                   WHERE      RFQs.LastEdited > '$lastedited'
                  ") or die(mysql_error());

if (mysql_num_rows($result) == 0) {
  $count++;
  sleep(5);  // ei uusia rivejä, nukutaan 5 sekuntia ja yritetään uudelleen.
}else {
// käy rivit läpi ja pistää arrayyn  
  for ($x = 0, $numrows = mysql_num_rows($result); $x < $numrows; $x++) {  
    $row = mysql_fetch_assoc($result);  

    array_push($JsonArray, array("rivi" => array("ID" => $row["RFQID"],
                                        "DateAdded" => $row["DateAdded"], 
                                        "Supplier" => $row["supplier"], 
                                        "Customer" => $row["customer"], 
                                        "Ship" => $row["ship"],
                                        "CustomerRef" => $row["CustomerRef"],
                                        "Contact" => $row["contactF"]." ".$row["ContactL"],
                                        "Description" => $row["Description"],
                                        "PIC" => $row["handler"],
                                        "Status" => $row["status"])));  
}
$count = 6;
}

}
if ($count == 5) {
  echo "NO RESULTS!!";
}
else if ($count == 6) {
  //echo JSON to page  
  echo json_encode($JsonArray); 
}

我的 jQuery 是这样的:

<script type="text/javascript" charset="utf-8">

function waitForMsg(lastload){
    if (lastload==null){
      lastload = { "lastload": "<?php echo $lastload; ?>" };
    } 
    $.ajax({
        type: "GET",
        url: "GetUpdates.php",
        datatype: "json",
        data: lastload,
        async: true, /* If set to non-async, browser shows page as "Loading.."*/
        cache: false,
        timeout:50000, /* Timeout in ms */

        success: function(data){ /* kun tulokset saadaan niin suoritetaan.. */
            if (data=="NO RESULTS!!") {
            setTimeout(
                'waitForMsg()',
                1000
            );
            } else {
              displayrow(data.rivi);
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            addmsg("error", textStatus + " (" + errorThrown + ")");
            setTimeout(
                'waitForMsg()', /* Try again after.. */
                "15000"); /* milliseconds (15seconds) */
        },
    });
};

$(document).ready(function(){
    waitForMsg(); /* Start the inital request */
});

function displayrow(item)
{
  var tblRow =
            '<td id="showbutton-'+item.ID+'"><a href="#" onclick="hideShow(rowID'+item.ID+'">+</a></td>'
   +'<td id="DateAdded-'+item.ID+'">'+item.DateAdded+'</td>'
   +'<td id="Supplier-'+item.ID+'">'+item.Supplier+'</td>'
   +'<td id="Customer-'+item.ID+'">'+item.Customer+'</td>'
   +'<td id="Ship-'+item.ID+'">'+item.Ship+'</td>'
   +'<td id="CustomerRef-'+item.ID+'">'+item.CustomerRef+'</td>'
   +'<td id="Contact-'+item.ID+'">'+item.Contact+'</td>'
   +'<td id="Description-'+item.ID+'">'+item.Description+'</td>'
   +'<td id="PIC-'+item.ID+'">'+item.PIC+'</td>'
   +'<td id="Status-'+item.ID+'">'+item.Status+'</td>'
   +'<td id="Actions-'+item.ID+'">Hit F5 for actions</td>';
   $('#newRFQrowInput').before(tblRow);
}
</script>

问题是我不确定应该如何处理从 ajax 查询返回的数据。 目前我得到的一切都是未定义的。

有人可以帮忙吗?

谢谢!

最佳答案

在 .php 文件中进行更改以发送回信息

$JsonArray = array("ID" => $row["RFQID"],
                    "DateAdded" => $row["DateAdded"], 
                    "Supplier" => $row["supplier"], 
                    "Customer" => $row["customer"], 
                    "Ship" => $row["ship"],
                    "CustomerRef" => $row["CustomerRef"],
                    "Contact" => $row["contactF"]." ".$row["ContactL"],
                    "Description" => $row["Description"],
                    "PIC" => $row["handler"],
                    "Status" => $row["status"]
            );
echo json_encode(array('rivi'=>$JsonArray));

更新:

在“For 循环”中进行更改

$JsonArray = array();
for ($x = 0, $numrows = mysql_num_rows($result); $x < $numrows; $x++) {  
    while($row = mysql_fetch_assoc($result)){
        array_push($JsonArray,array("ID" => $row["RFQID"],
                                    "DateAdded" => $row["DateAdded"], 
                                    "Supplier" => $row["supplier"], 
                                    "Customer" => $row["customer"], 
                                    "Ship" => $row["ship"],
                                    "CustomerRef" => $row["CustomerRef"],
                                    "Contact" => $row["contactF"]." ".$row["ContactL"],
                                    "Description" => $row["Description"],
                                    "PIC" => $row["handler"],
                                    "Status" => $row["status"]
                                    )
                ); 
    }

}

将其替换为您的

else if ($count == 6) {
  //echo JSON to page  
  echo json_encode(array("rivi" =>$JsonArray)); 
}

在 ajax 成功函数中也是如此。

success:function(data){
    if(data.rivi.length){
        //alert(data.rivi.length);
        displayrow(data.rivi);
    }               
}

最后在你的displayrow函数中

function displayrow($item){
    var tblRow = '<table>';
    $.each($item,function(index,value){
        tblRow +='<tr><td id="showbutton-'+value.ID+'"><a href="#" onclick="hideShow(rowID'+value.ID+'">+</a></td>'
               +'<td id="DateAdded-'+value.ID+'">'+value.DateAdded+'</td>'
               +'<td id="Supplier-'+value.ID+'">'+value.Supplier+'</td>'
               +'<td id="Customer-'+value.ID+'">'+value.Customer+'</td>'
               +'<td id="Ship-'+value.ID+'">'+value.Ship+'</td>'
               +'<td id="CustomerRef-'+value.ID+'">'+value.CustomerRef+'</td>'
               +'<td id="Contact-'+value.ID+'">'+value.Contact+'</td>'
               +'<td id="Description-'+value.ID+'">'+value.Description+'</td>'
               +'<td id="PIC-'+value.ID+'">'+value.PIC+'</td>'
               +'<td id="Status-'+value.ID+'">'+value.Status+'</td>'
               +'<td id="Actions-'+value.ID+'">Hit F5 for actions</td></tr>';
    }   
   tblRow = '</table>';
   $('#newRFQrowInput').before(tblRow);
}

关于php - 将 jQuery ajax 中的 json 数据作为新行插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227343/

相关文章:

php - 使用 php 连接和插入数据到 mysql 表

php - Javascript/jquery 在 IE8 中不工作

javascript - jQuery 追加模板?

jquery - 如何将 POST 与 jQuery 自动完成结合使用?

php - 调用未定义的方法 DateTime::format 但 DateTime 正在工作

PHP - 解析错误 : Unexpected EOF/Directories

javascript - 在 Javascript 中将数组转换为嵌套 JSON?

json - Bad Request -Post 方法 - JSON DateTime 问题

ios - iOS 9-10静默推送通知的JSON结构

jquery - CSS 未检测到数据属性的更改