2016-07-28 70 views
0

场景:我需要在每隔x分钟数量更改一次间隔循环中,将页面加载(php)中的数据库单元与自身进行比较。将php数组与javascript数组的相同数据进行比较

我最初的负载数据是这样的:

var olddata = JSON.stringify(<?php echo json_encode($data1); ?>) + "~|~" + 
    JSON.stringify(<?php echo json_encode($data2); ?>) + "~|~" + 
    JSON.stringify(<?php echo json_encode($data3); ?>); 

所以在页面加载,我的细胞保存到一个javascript变量和“〜|〜”分隔符,其中$数据1,$ 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

例子:

"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那么它将返回[对象的对象]

+0

比较是没用的,我的意见,只是采取数据和显示它... 另外,为什么你不把旧数据存储为数组? –

回答

2

您正在使用一种非常糟糕的做法。只要使用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全局变量,然后通过$.get返回的新数据进行比较的旧数据。这不是你的错误的解决方案,但它是一个更好的方式来做你正在做的事情。

修复错误刚刚宣布在你的$.get函数的返回值的类型,像:

$.get("ajaxpage.php", function(data) { 
    if (data == olddata) { 
     console.log("Good!"); 
    } 
}, 'text'); 

有关的返回类型的更多信息,看看jQuery的文档:jQuery $.get Documentation

+1

啊谢谢,我不知道为什么我没有'不要想到从AJAX调用中抓取这两个变量,而是仅仅从一个变量中抓取变量。谢谢! – DanceSC

0

只是将其更改为:

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); 

现在你只是比较两个字符串。

+0

我只是这样,我得到同样的问题,它仍然在正斜杠前加反斜杠,它也编码单引号和其他字符 – DanceSC