簡體   English   中英

比較php數組與javascript數組相同的數據

[英]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!");
    }
});

當我比較olddatadata它們看起來幾乎一模一樣,除了......有數據/在它看起來像\\/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM