I have been trying to add data from my ajax query that returns json data created in following mode:
$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);
}
My jQuery goes like this:
<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>
Problem is I’m not sure how I should process this data coming back from ajax query.
At the moment all I’m getting is undefined.
Can some one help?
Thanks!
Make changes in your .php file that send back information
UPDATE:
make changes in your “For loop”
Replace this with yours
and in ajax success function also.
Then at last in your displayrow function