1

再質問です。状況を単純化するために、このスクリプトをindex.phpファイルに入れました

<form name="f" action="index.php" method="post">
    <input type="button" name="but" id="but" value="Retrieve">
    <div id="div"></div>
    <input type="submit" name="ok">
</form>



<script type="text/javascript">
document.getElementById("but").onclick = function(){
    var http = false;
    if (window.XMLHttpRequest){
        http = new XMLHttpRequest();
    } else {
        http = new ActiveXObject("Microsoft.XMLHttp");
    }
    if (http){
        http.open("POST","other.php",true);
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http.onreadystatechange = function(){
            if (http.status==200 && http.readyState==4){
                document.getElementById("div").innerHTML = http.responseText;
            }
        };
        http.send(null);
    }
};
document.getElementById("y").onclick = function(){
    alert("okaaay");
};
</script>

そして、以下のスクリプトを含むother.phpファイルを用意します

<?php
echo "<input type='text' name='y' id='y'>";
?>

Ajaxスクリプトはうまく機能しますが、私の問題は、このマークされた入力要素がindex.phpページで取得されたときに、2番目のJavaScriptコードで操作できないことです。助けてください、ありがとう:)

4

2 に答える 2

3

コードを変更して、other.php からの応答が戻ってきた後に "y" onclick を設定するようにします。

 http.onreadystatechange = function(){
        if (http.status==200 && http.readyState==4){
            document.getElementById("div").innerHTML = http.responseText;
            document.getElementById("y").onclick = function(){
              alert("okaaay");
            };
        }
    };

それ以外の場合は、まだ存在しない要素にそのイベント ハンドラーを設定しています :-)

于 2012-07-27T22:12:23.710 に答える
0

代わりに、いくつかの情報を送り返す必要があると思います。

$response = json_encode( array('type'=>'text','name'=>'y','id'=>'y') );
print $response;

次に、それを (タイプ application/json として) 受け取ったら、javascript を使用して type の新しい要素を作成し、input受け取った json を使用して必要なプロパティを指定します。作成して変数に保存したら、その要素を div 内に配置します。

于 2012-07-27T22:12:56.923 に答える