我使用Ajax調用從數據庫動態獲取記錄。但是,我想限制只添加新行。例如,如果我的第一個Ajax調用的行如下。不想在表中使用jQuery添加重複行
<tr><td>123</td><td>581</td><td>2013-05-05</td></tr> <br/>
<tr><td>198</td>td>55</td><td>2013-05-05</td></tr>
對於第二個Ajax調用,我得到的行如下。
<tr><td>123</td><td>581</td><td>2013-05-05</td></tr> <br/>
<tr><td>4465</td><td>3481</td>td>2013-06-05</td></tr>
現在,我想檢查第一個td值的表。如果新行已經有表中的行,我不想追加它們。只應添加不同的行。在上面的例子中,我不想添加具有123值的td,因爲它已經存在。我很困惑如何去做。
$.ajax({ // Making an Ajax call.
url:"/Project/getAllMessages.do", // Call URL.
dataType:"json", // Expecting the data type as Json.
data:{ // Pass commodityId,apmcId,mainLabelId & UserDB to the ervice.
mainLabelId:mainLabelId,
inputDate:inputDate
},
"async":false,
type:"POST",
success:function(allMessagesJson){ // Get Json data in Success Call back function.
$('#divAllInbox').css('display','none');
var allMessages = allMessagesJson[0];
for(index in allMessages){
counter ++;
arrMsgs[counter] = allMessages[index]; // Take the complete message into Array.
mysqlContentId = allMessages[index].mysqlContentId; //mysqlContentId.
var imgMainLabel = mainLabelName.replace(/\s/g, ""); // Remove spaces from the string.
$("#tblMainLabelsInbox tbody").loadTemplate($("#messageTemplate"), // Load All tr's as Template.
{
comm_main_labelid:allMessages[index].mainLabelId,
comm_mysql_id:mysqlContentId,
comm_hidden_date:allMessages[index].date
},
{
append:true
}
); // Appended to Table.
} // End For.
},
error:function(xhRequest, ErrorText, thrownError){ // Error Call back function.
if(xhRequest.status === 401 || xhRequest.status === 403){
alert("Bad Request. Please Try Again.");
} else if (xhRequest.status === 504 && !ajaxRequest++) {
loadData(commodity,apmc,mainLabelId,userDB);
} else if (xhRequest.status === 500) {
alert("Server error. Please try later.");
}
}
});
您的行的HTML無效。你應該先解決這個問題。關於只獲取新行的問題,您希望以某種方式在後端對結果進行分頁並僅返回所需的數據。最好將該邏輯放在後端。搜索此網站的Ajax和分頁關鍵字應該爲您提供一些想法。 – jammypeach
@jammypeach,編輯HTML代碼。我只需要在Ajax方面進行驗證。我的要求就是這樣的。 – Syed
你可以將你現有的表格傳遞給你的請求,並在php中使用它創建一個數組(在數組中,一個tr =一個位置),然後選擇你只要看看in_array ....如果不是,添加比通過json回來和建立表新 – Dwza