2011-01-06 15 views
0

サーバーに3つの要求を行うこのコードはありますが、要求はうまく機能しますが、応答が返ってくるとコードが失敗し、最初の応答を避けて3番目を返します。AJAXのサーバーからの応答がありません

phone.open("POST", '/', true); 
phone.setRequestHeader("Content-type", elmnt.getAttribute('ctype')); 
phone.send(reqStr); 

これは応答をキャッチするコードです。ここ

phone = new ConstructorXMLHttpRequest(); 
onreadystatechange = function(){ 
     if(phone.readyState == 4){ 
     if(phone.status == 200){ 
     var val = phone.responseText; 
     alert(phone.responseText) 
     dataInsert(val); 
     break; 
     }else{ 
       alert("Problemas status:"+phone.status+" state:"+phone.readyState); 
       break; 
     } 
      } 

}; 

@Hemlockは、コンストラクタのコードです:

function ConstructorXMLHttpRequest() 
{ 
     if(window.XMLHttpRequest) /*XMLHttpRequest(Browsers Mozilla, Safari and Opera). */ 
     { 
     return new XMLHttpRequest(); 
     } 
     else if(window.ActiveXObject) /*IE*/ 
     { 
     /*There a several difference between versions of IE, so 
     * if the kids of MS release a new please put in this Array.*/ 
     var versionesObj = new Array(
     'Msxml2.XMLHTTP.5.0', 
     'Msxml2.XMLHTTP.4.0', 
     'Msxml2.XMLHTTP.3.0', 
     'Msxml2.XMLHTTP', 
     'Microsoft.XMLHTTP'); 
     for (var i = 0; i < versionesObj.length; i++) 
     { 
      try 
      { 
      return new ActiveXObject(versionesObj[i]); 
      } 
      catch (errorControlado) 
      { 
      } 
     } 
     } 
throw new Error("Couldn't make a XMLHttpRequest"); 
} 
+2

あなたの質問は意味がないし、あなたの 'switch'ブロックは無用です。 – SLaks

+3

それをコピーしてDailyWTFに送るつもりです。 –

+0

なぜ役に立たない私はこれが私にこの間違いを与えるのは初めてです。 – hidura

答えて

1

の人々は、これは面白いと思い理由で、あなたのcaseステートメントがあるので、A)あなたが実際には異なる取るにしたくない役に立たないので、アクションはオブジェクトの状態に依存しますが、実際には1つの条件の下でそのステータスを処理したいだけです.B)はifステートメントと組み合わせて使用​​されます。これは構文的に間違いはないでしょう。

私はまた、あなたのAJAXを行うためにjQueryのようなサードパーティのライブラリを使用してになるはずだと思うあなたは

if(phone.readyState == 4){ 
     var val = phone.responseText; 
     alert(val); 
     dataInsert(val); 
    }else{ 
     alert("Problemas status:"+phone.status+" state:"+phone.readyState); 
    } 

をやろうとしていると思います。

http://api.jquery.com/jQuery.ajax/

$.ajax({ 
    url: 'getData.html', 
    success: function(val) { 
     alert(val); 
     dataInsert(val); 
    } 
}); 
+0

アドバイスをありがとうが、私は同じミスの原因です、私は3つの応答の最後を与え、私はすべての関数内のリクエストを行うので、javascriptが最後のresponseTextの値を置き換えている場合のようです。 – hidura

+0

この問題の言語の障壁は間違いありません。私は壊れた英語をどうやって読むのかよく知っています。そして、私は@hiduraが問題を言っていることにはほとんど従っていません。あなたは3つの回答のうち最後のものをあなたに与えるのはどういう意味ですか?あなたが望むものではありませんか? – jcolebrand

+0

まあ、サーバーへのリクエストは、同じ関数内で応答を送信しますが、同じ関数の中で3番目のものが順番に3番目に表示されます。 – hidura

関連する問題