Ajax はonsubmit
、Firefox のフォームからトリガーされると空の文字列で応答しますが、Internet Explorer と Opera では正常に動作します (フォームではなく送信ボタンで送信された場合、Firefox で動作しますonsubmit
)。
ajax GET を使用して php ファイルを呼び出し、 - を使用して php ファイルの応答を呼び出すだけですecho $response = "something";
。次に、応答値がアラートされます。私はIEで動作させていますが、Firefoxでは応答は空の文字列です(によってチェックされますtypeof()
)。
コードは 4 つのファイル: index.php、ajax-connect.js、cbb.js、cbb.php
index.php
<html> <head> <script src="ajax-connect.js"></script> <script src="cbb.js"></script>
</head> <body>
<form name="condtactform1" method="get" action="" onSubmit="contactfunction()">
<input type="submit" name="hissubmit" id="hissubmit" value="submit"> </form>
</body> </html>
ajax-connect.php
/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
/*@cc_on @*/
/*@
if (@_jscript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
@end
@*/
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
cbb.js
function contactfunction() {
var url = "cbb.php";
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatecontact1;
xmlHttp.send(null);
}
function updatecontact1() {
if (xmlHttp.readyState == 4) {
var responsae = xmlHttp.responseText;
alert(responsae);
}
}
cbb.php
<?php $response = "something"; echo $response; ?>
フォーム送信の代わりに送信ボタンで ajax をトリガーすると、次のように firefox で正常に動作します。
<form name="condtactform1" method="get" action="">
<input type="submit" name="hissubmit" id="hissubmit" value="submit" onFocus="contactfunction()"> </form>
なぜこれをやっているのですか?
ありがとう。