複数のajax呼び出しを同時に呼び出す際に問題があります。私はsetXValues
を使ってドームの値を変更して3つの値のセットを設定するために、ページロード時に次の3つのgetXValues
関数を呼び出します。jqueryを使用しない複数のAjax呼び出しのオーバーライド値
この条件では、1つの関数だけが実行され、3つのフィールドすべてで同じ値が設定されます。
以前のsetXValues
の値でそれぞれの関数を呼び出すと、すべて正常に動作し、前の関数が完了しなければならない場合には、setXValues
を呼び出します。
function getIValues(){
var url = "./Servlet?ajaxAction=getIDetail&id="+id;
ajaxRequestForChange(url,"I");
}
function getFValues(){
var url = "./Servlet?ajaxAction=getFDetail&id="+id;
ajaxRequestForChange(url,"F");
}
function getCValues(){
var url = "./Servlet?ajaxAction=getCDetail&id="+id;
ajaxRequestForChange(url,"C");
}
var ajaxRequestForChange = function(url,fun) {
var strURL = url;
var xmlHttpRequest = false;
var self = this;
// Mozilla, Safari
if (window.XMLHttpRequest) {
self.xmlHttpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
self.xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpRequest.open("POST", strURL, true);
self.xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
self.xmlHttpRequest.onreadystatechange = function() {
if (self.xmlHttpRequest.readyState == 4) {
if (self.xmlHttpRequest.status == 200) {
var htmlString = self.xmlHttpRequest.responseText;
if(fun == 'I'){
setIValues(htmlString);
}
if(fun == 'F'){
setFValues(htmlString);
}
if(fun == 'C'){
setCValues(htmlString);
}
} else {
ajaxFailedCount++;
// Try for 1 min (temp fix for racing condition)
if (ajaxFailedCount < 1200) {window.setTimeout(function() {ajaxRequest(url)}, 50);}
else {alert("Refresh failed!")};
}
}
}
self.xmlHttpRequest.send(null);
}
私の問題を解決する方法を提示することができれば、それは十分に役立つでしょう。
注:また、私はUIコンポーネント(私はそれが、選択の余地が嫌い...)あなたの助けを事前に
おかげで、その一部ではないので、jQueryのを使用することはできませんのでご注意ください。
私はまだ同じ問題を提案した変更を加えました。 – JBaba
次に、動作していないコードをすべて提供する必要があります。たとえば、あなたの 'setIValues'、' setFValues'、 'setCValues'はどこですか?あなたのHTMLはどこですか? – gforce301