2016-07-28 15 views
0

シナリオ:ページループ(php)上のデータベースセルと、変更のためのx分ごとに間隔ループ内でそれを比較する必要があります。私の最初のロードデータは次のようになりますphp配列とjavascript配列との比較同じデータ

:| $のDATA1は、$ DATA2、および$「~~」区切り、ページのロードにそう

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

、私はとjavascriptの変数に細胞を保存します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!"); 
    } 
}); 

私はdataに対してolddataを比較すると、彼らは除いてほとんど同じに見える...それに/を持っているデータがで\/ようになります。 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. 

、彼らが完全に一致するように、どのように私は2つを比較することができますか?そのため、データベースとjson_encodeからエコーする内容は、ページにエコーされたものとjson関数の戻り値からエンコードされたものと同じものから得られるものと一致します。

注:私はJSON.stringifyを削除した場合、それが返されます[オブジェクトのオブジェクト]

+0

比較は役に立たない、私の意見は、ちょうどデータを取って、それを表示する... また、なぜolddataを配列として保存しないのですか? –

答えて

2

あなたは非常に悪い習慣を使用しています。その後、$.getによって返される新しいデータで古いデータを比較し、JavaScriptのグローバルvarに

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

とストア「OLDDATA」:ちょうどこれを取得するためにAJAXを使用しています。これはあなたのバグに対する解決策ではありませんが、あなたがやっていることをやるより良い方法です。戻り値の型の詳細については

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

を、jQueryのドキュメントを見て::jQuery $.get Documentation

をちょうどそのように、あなたの $.get関数内で、戻り値の型を宣言バグを修正する

+1

Ahhhありがとう、両方の変数を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); 

単純に2つの文字列を比較しています。

+0

私はこれだけですが、私は同じ問題を抱えています。スラッシュの前にバックスラッシュを追加しています。また、シングルクォートやその他の文字をエンコードしています。 – DanceSC

関連する問題