次のモードで作成されたjsonデータを返すajaxクエリからデータを追加しようとしています: $ lastedited = $ _GET ['lastload'];jQuery ajaxから新しい行としてテーブルにjsonデータを挿入する
$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>
問題は、私は、私はアヤックスクエリから戻ってくるこのデータをどのように処理すべきかわからないです。 現時点で私が得意とするのは未定義です。
いくつかお手伝いできますか?
ありがとうございます!あなたはそれを返す前に
json_encode($JsonArray);
を
あなたはJavaScriptに戻ってそれを渡す前に、JSONとしてエンコードする必要があります。 – hakre