[英]Compare php array to javascript array same data
場景:我需要每隔x分鍾的時間間隔,將一個頁面循環(php)上的數據庫單元與它自己的間隔進行比較。
我的初始加載數據如下所示:
var olddata = JSON.stringify(<?php echo json_encode($data1); ?>) + "~|~" +
JSON.stringify(<?php echo json_encode($data2); ?>) + "~|~" +
JSON.stringify(<?php echo json_encode($data3); ?>);
因此,在頁面加載時,我將單元格保存到帶有“〜|〜”定界符的javascript變量中,其中$ data1,$ data2和$ data3是數據庫中3個不同的單元格(數據數組)。
我的間隔循環數據(ajax調用)如下所示:
// PHP on the AJAX page
echo json_encode($data1)."~|~".json_encode($data2). "~|~".json_encode($data3);
// AJAX code that gets called every x Intervals
$.get("ajaxpage.php", function(data) {
if (data == olddata) {
console.log("Good!");
}
});
當我比較olddata
對data
它們看起來幾乎一模一樣,除了......有數據/
在它看起來像\\/
在data variable and not in the
olddata`變量。
例:
"10":["10"],"11":["11 5\/25"] // data = return from the AJAX call
"10":["10"],"11":["11 5/25"] // olddata = what was originally echoed on page load.
我如何比較兩者,以便它們完美匹配? 這樣,我從數據庫和json_encode中回顯的內容將與我在頁面上回顯的相同內容以及從json函數返回的jason編碼中得到的內容完全一致。
注意:如果刪除JSON.stringify,則它將返回[object Object]
您正在使用非常不好的做法。 只需使用AJAX即可:
var olddata = JSON.stringify(<?php echo json_encode($data1); ?>) + "~|~" +
JSON.stringify(<?php echo json_encode($data2); ?>) + "~|~" +
JSON.stringify(<?php echo json_encode($data3); ?>);
並將“ olddata”存儲在JavaScript Global var中,然后將舊數據與$.get
返回的新數據進行比較。 這不是解決您的錯誤的方法,但它是做您正在做的事情的更好方法。
要修復該錯誤,只需在$.get
函數中聲明返回值的類型,如下所示:
$.get("ajaxpage.php", function(data) {
if (data == olddata) {
console.log("Good!");
}
}, 'text');
有關返回類型的更多信息,請參見jQuery Documentation: jQuery $ .get Documentation
只需將其更改為:
var olddata = '<?php echo json_encode($data1, JSON_HEX_APOS); ?>~|~<?php echo json_encode($data2, JSON_HEX_APOS); ?>~|~<?php echo json_encode($data3, JSON_HEX_APOS); ?>';
后端為:
echo json_encode($data1, JSON_HEX_APOS)."~|~".json_encode($data2, JSON_HEX_APOS). "~|~".json_encode($data3, JSON_HEX_APOS);
現在,您只是比較兩個字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.