コメントを表示する Web ページがあり、ユーザーは [フラグ] リンクをクリックして不適切なコメントを報告できます。
ユーザーが [フラグ] リンクをクリックすると、AJAX と innerHTML を使用して、コメントの下にドロップダウン ボックスを表示し、理由コード (スパム、攻撃的、トピックと無関係など) と [キャンセル] ボタンを表示します。
ユーザーが [送信] をクリックした場合、別の AJAX 要求を使用して、データベースが更新された PHP ファイルに応答を送信し、最後に (ページをリロードせずに) 「ありがとう」を受け取ります。基本的に、ドロップダウン ボックスを表示する DIV を、別の AJAX リクエストを使用して「ありがとう」に置き換えたいと考えています。
そこが問題です。最初の AJAX リクエストからの HTML レスポンス内から AJAX リクエストを実行できないようです。JavaScript 関数が失敗します。単純な Alert('hello world') でさえ機能しません。最初の AJAX リクエストを呼び出すメイン ページと、最初の AJAX リクエストからの HTML レスポンスとして表示される PHP ファイルに JavaScript 関数を配置しようとしましたが、うまくいきませんでした。呼び出されたときに実行されません。
PHP ファイルを外部からロードするとすべて正常に動作するので、JavaScript が正しいことがわかります。PHP ファイルを HTML 応答 DIV にロードし、そこから JavaScript を呼び出すと、うまくいきません。
すべてをまとめると、AJAX 要求の HTML 応答から JavaScript 関数をどのように実行するのでしょうか?
編集:ここに私がやりたいことのサンプルがあります:
これは、ユーザーが [フラグ] リンクをクリックしたときに DIV を設定する AJAX 部分です。
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4)
{
document.getElementById(whichdiv).innerHTML=xmlhttp.responseText;
}
};
xmlhttp.responseText の値は、次の外部ファイルから取得されます。
<input type="hidden"/>
<script type="text/javascript" language="javascript">
function displayalert()
{
alert ('Hello World!');
}
</script>
<form name="myform" id="myform">
<input type="text" name="myfield" value="teststring"/><br/>
<input type="button" name="button" value="Submit"
onclick="displayalert();"/>
</form>
注:上記は、 http://msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx<input type="hidden"/>から見つけた提案から来ています。
ユーザーがボタンをクリックしても、JavaScript の displayalert() 関数は実行されません。警告ボックスはポップアップしません。ファイルを innerHTML で呼び出すのではなく、外部から読み込むと、スクリプトは正常に動作します。
xmlhttp.responseText に JavaScript コードを含めることはできますか?