2011-01-23 6 views
0

文字列をロードしません:responseTextがJavaScriptコードが含まれており、コードが

<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6..."></script> 

はXMLHttpRequestを()リクエストから来て、PHPで生成され、その後、javasciptと新しいウィンドウに書き込まれますが、スクリプトは読み込まれません。ソースコードにその文字列が含まれていても、ウィンドウは空白になります。

エンコードに問題はありますか?

文字列は 'recaptcha_get_html($ publickey)'の結果です。ここでは、recaptchaスクリプトによって提供されるPHP関数です。

+3

例にリンクを追加したり、質問のタイトルを書き換えたりできますか?これは今は進まないことです! –

+0

HTMLソースではなくテキストとして扱われていませんか?たぶん、あなたは 'newWindow.appendHTML(response)'の代わりに 'newWindow.appendText(response)'のようなことをしているのでしょうか? – Crozin

+0

私はwin.document.getElementById( "main")を行います。innerHTML = xmlhttp.responseText; – user583311

答えて

1

.innerHTMLを設定してスクリプトタグを作成すると、一般にスクリプトが実行されることはありません。 IEブラウザのスクリプトタグに "defer"属性が設定されているような例外がありますが、一般的にはそれはおそらく方法ではありません。 (私は "非同期"属性が何をするのか分かりません。このようにして作成されたスクリプトはasync = "true"という結果になりましたが、私はそれをテストしていません)。

createElement( "script")を作成し、そこに.srcを設定し、DOMのどこかに埋めてください。それをロードして実行するだけでなく、多くの場合、非同期的に(通常のスクリプトタグとページロードの残りの部分をブロックする)対して通常より優れています。

+0

async = falseで動作しません。私は 'echo recaptcha_get_html($ publickey)'からhtmlコードを受け取るので、createElement( "script")を実行できません。 innerHTMLに加えて、他にどのような挿入方法を使用できますか? – user583311