これは何度も尋ねられますが、私が見つけた答えはありません。基本的には、他の多くの関数から呼び出せるAJAX関数があります。私の問題は、ロードされた要素(イベントリスナーの追加など)でコードを実行する必要がある場合です。もちろん、スクリプトは "document.getElementById(...)is null"というエラーを受け取ると、要素のロードが完了するのを待たない。 私はコールバックを試みましたが、何も変更しません。 同期AJAXを試しました。それは老朽化しています。動作しませんでした。 レスポンスデータでJavaScriptを実行しようとしました。ここの誰かが知っておくべきであるように、動作しません。続行する前にAJAXの応答を待つ
だから私は何かが欠けている。ページをリロードせずに動的データを読み込む別の方法はありますか?コードを強制的に待機させる方法はありますか?これに対する解決策は何ですか?
動作しませんマイコード:
function ajax_call(page, target_tag, data)
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
{
target_tag.innerHTML = xhttp.responseText;
}
};
xhttp.open("POST", page);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(data);
}
function edit_gallery(gallery)
{
var target_tag= document.createElement("div");
target_tag.style.position= "fixed";
target_tag.style.top= "10px";
target_tag.style.backgroundColor= "#FFFFFF";
target_tag.style.padding= "10px";
target_tag.style.margin= "0px auto";
target_tag.id= "gallery_edit_window";
document.getElementsByTagName("BODY")[0].appendChild(target_tag);
ajax_call("/everythingapps/imagegallery/edit_gallery.php", target_tag, gallery);
document.getElementById('gallery_save_btn').addEventListener('click', function() {save_gallery();});
}
function save_gallery()
{
alert('test');
}
だから私の問題は、コードのこの公園である:
ajax_call("/everythingapps/imagegallery/edit_gallery.php", target_tag, gallery);
document.getElementById('gallery_save_btn').addEventListener('click', function() {save_gallery();});
ので、任意のアイデア? JSライブラリはありません。
編集:コールバックでいくつか試行しました。正直なところ私はそれらを理解するのが難しいです。ここに私の最後の試みがあります:
function testing(callback)
{
callback("/everythingapps/imagegallery/edit_gallery.php", target_tag, gallery)
}
testing(ajax_call);
document.getElementById('gallery_save_btn').addEventListener('click', function() {save_gallery();});
コールバックに対するアプローチを示してください。これはうまくいきませんでした。 – Thomas
@Thomas ok、私はそれを追加しました。 – Zaper127