jqueryを使わずに外部のPHPファイルにデータを送信するスクリプトを作成しました。私も何をしたいのかjqueryを使わずにブラウザのタブを閉じて、データをPHPファイルに送信します。
<script type="text/javascript">
var statsPage = 'http://www.my-url.com/response.php';
function ca(c,o,n,t,e,t,u){return p={type:c,userid:o,gender:n}}
ca("pageview", "1", "male");
var params = Object.keys(p).map(function(k) {
return encodeURIComponent(k) + '=' + encodeURIComponent(p[k])
}).join('&')
const req = new XMLHttpRequest();
//req.addEventListener('load' /*callback after req is complete*/);
req.open('GET', statsPage + '?' + params);
req.send();
req.onreadystatechange = function() {
if (req.readyState == XMLHttpRequest.DONE) {
alert(req.responseText);
}
}
</script>
は、ブラウザのタブを閉じたときにデータを送信することですので、私は以下のようなスクリプトを書きましたが、それは動作しません。私はここでPHPファイルからの応答を取得しません。
navigator.sendBeacon = navigator.sendBeacon || function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.my-url.com/response.php?pag_title=1');
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
alert(xhr.responseText);
}
}
};
私もこのスクリプトが見つかりましたが、それは、アラートとしてもresponse.phpファイルからの応答を私に与えていない:
window.onbeforeunload = function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.my-url.com/response.php?pag_titel=1', true);
// If specified, responseType must be empty string or "text"
xhr.responseType = 'test';
xhr.onload = function() {
if (xhr.readyState === xhr.DONE) {
if (xhr.status === 200) {
//console.log(xhr.response);
//console.log(xhr.responseText);
alert(xhr.responseText);
}
}
};
xhr.send(null);
}
EDIT
私はまた、次のテストをしましたが、今度は最初に値1のアラートボックスを与え、関数caの応答を示すアラートを返します(関数の先頭のコードの最初の部分を参照)。だから私はonbeforeunloadがここで働いていないと思う。私がブラウザのタブを閉じると、私は何も返答しません。
window.onbeforeunload = function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.digital-productions.be/dev/analytics/response.php?pag_titel=1', true);
// If specified, responseType must be empty string or "text"
xhr.responseType = 'test';
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
alert(xhr.responseText);
}
}
xhr.send(null);
}
問題の説明ではありません「動作していません」。実際に何が起こるのですか?ハンドラ関数が呼び出されますか?それは例外なく完了するまで実行されますか?ネットワークリクエストは送信されますか? – melpomene
私はここで私の外部PHPファイルからの警告として返信を得ることはありません。私は私の質問を編集しました。 – Brecht27
OK、他の質問に対する回答は何ですか? – melpomene