から返された私は、このように長い文字列を返す(Laravel)PHPコード持っている:私はJavaScriptでこの文字列を取得し、それをきれいにする必要がは、XMLHttpRequestのリクエスト
echo json_encode([
'created' => $count,
'total' => $num_stores,
'progressValue' => round((100/$num_stores) * $count, 2),
'token' => str_repeat('|',1024*64)
]);
を、すべての "|"キャラクター。しかし、それは動作していないようです。
これは私のjavascriptのコードです:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
try {
if (xhr.readyState == 4) {
alert('[XHR] Done');
} else if (xhr.readyState > 2) {
var new_response = xhr.responseText.substring(xhr.previous_text.length);
var cleanedResponse = new_response.replace(/[|]/g, '');
console.log('CLEANED RESPONSE: ' + cleanedResponse);
var result = JSON.parse(cleanedResponse);
console.log('AFTER THE PARSE');
xhr.previous_text = xhr.responseText;
}
} catch (e) {
console.log(xhr.responseText);
alert("[XHR STATECHANGE] Exception: " + e);
}
};
xhr.open("POST", "...", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("X-CSRF-TOKEN", jQuery('meta[name="csrf-token"]').attr('content'));
xhr.send(params);
私はJSONを解析しようとしたとき、私は常に例外を取得し、コンソールに、私はまだ見「|」 "cleanedResponse"変数の文字
どのように私はそれらを交換する場合、それは可能ですか?
私は、部分的なデータを解析する必要があり、私はプログレスバーを実装する必要があります。私が状態== 4にあるとき、プロセスは終了します。 –
は確かに、あなたはそれを行うことができます。状態> 2で進行状況バーを変更しますが、文字列が完全にロードされるまでは 'JSON.parse'を実行しないでください。状態は== 4です。 –
また、XHRにはデータがダウンロードされると起動する特別なイベントがありますどのくらいの量がロードされ、残りの量がどれだけ残っているかを示す数値が表示されます。これは特にあなたのような状況のためのものです。 responseTextの長さを測定する必要はありません。詳細については、https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progressを参照してください。 –