ホームページ  >  記事  >  バックエンド開発  >  Ajax 非同期リクエスト関数にエラーがあり、多くのブラウザでは成功せず、プロンプトが機能しません。

Ajax 非同期リクエスト関数にエラーがあり、多くのブラウザでは成功せず、プロンプトが機能しません。

WBOY
WBOYオリジナル
2016-06-23 13:14:432693ブラウズ

rt、私は PHP ウェブページを作成しています
私の左の列はオプションであり、js
var xmlhttp = null; を使用して右の列が表示されます。 GetXmlHttpRequest (){
var xmlHttp = null;
try{
xmlHttp = new XMLHttpReqeust(); }
catch (e){
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
キャッチ( e){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){
xmlHttp = false; }
}
}
return xmlhttp = GetXmlHttpRequest() ; 'showallnodes').onclick = function(){

xmlhttp.open('GET','node/allnodes.php',true);
xmlhttp.onreadystatechange = showclass
} ;これは IE を使用して表示できます。コードの他の部分は問題ありません。
私は 360 (他のカーネルを使用していますが、それでも一般的に使用されているブラウザーです)、Chrome、を試しました。エッジなどのすべてのプロンプト
manage.js:57 Uncaught TypeError: xmlhttp.open は関数ではありません
皆さんありがとうございます、、、
また、IE では表示できますが、IE では表示されないたびに少しコードを変更しています有効になりますが、キャッシュが残っているように感じます。他のブラウザではこの問題は発生せず、すぐに有効になります







ディスカッション (解決策)

	try {		xmlhttp = new XMLHttpRequest();	} catch (oc) {		try {			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");		} catch (oc) {}	}
あなたの xmlHttp = new XMLHttpReq eust(); は間違っています

IE にはキャッシュがあるため、URL にランダムな値を追加できます

php

	header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past	header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");	header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1	header ("Pragma: no-cache");                          // HTTP/1.0
でキャッシュを防ぐためにヘッダーを送信するのが最善です

そこでブラウザの互換性には多くの問題があります。不必要なトラブルを避けるためには、JQuery などのフレームワークを使用するのが最善です。モデレーターの返信に間違ったリクエストを入力していませんでした。間違って投稿したことに注意してください。

もう一度 jQuery フレームワークを使用してみます。

私の状況に遭遇して解決した人にアドバイスをいただけますか? ! ! あなたの xmlhttp = GetXmlHttpRequest();
$('showallnodes').onclick = function(){

xmlhttp.open('GET','node/allnodes.php',true); showclass;

xmlhttp.send(null);
}
jQuery を使用して
$('#showallnodes').click( function(){

$.get('node/allnodes.php', showclass);

} )

前に問題が見つかりました。つまり、メソッドが間違っています。非同期メソッドでは問題ありませんが、表示方法は Biren のサンプルコードに従いました。

この return メソッドを使用することに問題はありませんか?ブラウザのデバッグで 200 が見つかりました。非同期メソッドの呼び出しは成功しました。
function showclass(){
if(xmlhttp.readystate == 4){

if(xmlhttp.status == 200) {

$(' showmenu').innerHTML = xmlhttp.responseText;
}
}
}
これは右側の列の div の ID です。
開いた PHP ページには次の
header('content-type:text /html;charset=utf -8');
そうですか? 以前は IE を呼び出すことができましたが、現在は非同期メソッドによって返される 200 が表示されません。どうすれば表示されますか?ありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。