2016-09-19 16 views
0

私はXMLHTTPREQUEST同期を使用していますが、要求が満たされている間、私はページ上のすべてを隠して進行メッセージを表示します。これはMozillaでは正常に動作しますが、Chromeでは動作しません。MozillaではAjaxが正常に動作し、Chromeではうまく動作しません。

Mozilla Firefoxの:Chromeの

after submit

[後に提出する] [3]ここで

は私のjavascriptのコードです:

if (valid) { 

    document.getElementById('contentwrapper').style.display="none"; 
    document.getElementById('contentwrapper').style.visibility="hidden"; 

    var cboxes = document.getElementsByName('items[]'); 
    var len = cboxes.length; 
    var res1; 
    var res2; 
    var res3; 
    var res4; 
    var arrResult; 

    for (var i = 0; cboxes[i]; ++i) { 
     if (cboxes[i].checked) { 
      checkedValue = cboxes[i].value; 
      arrResult = checkedValue.split(','); 
      mobileNo=arrResult[0]; 
      if(arrResult[0].trim().startsWith('0')){ 
       res1 = arrResult[0].substring(1,arrResult[0].length); 
      }else{ 
       res1 = arrResult[0]; 
      } 
      res2 = arrResult[1]; 
      res3 = arrResult[2]; 
      res4 = arrResult[3]; 
      requestSender(1, res1, res2, res3, res4); 
     } 
    } 

function requestSender(code, mobile, operator, productCode, amount) { 

var http = getHTTPObject(); 
var enterKeyHandler = true; 
var reqNum = 0; 
var seqNum = 0; 
var dataCount = 0; 
var Values = ""; 
var code; 
var comments = ""; 
reqCode = code; 
if (code == 1) { 

    var agentcode = '<%=payeeaccountno%>'; 
    var pin = document.getElementById("mpin").value; 
    source = agentcode; // source and agent code both are same. 
    operator = operator; 
    destination = mobile; 
    productCode = productCode; 
    if (destination.charAt(0) == '0') { 
     destination = destination.replace(/^0+/, ""); 
    } 
    var amt = amount; 
    var amtPrd = new Array(); 
    amtPrd = amt.split("@"); 
    if (amtPrd.length > 0) 
    { 
     amount = amtPrd[0]; 
     // productCode = amtPrd[1]; 
    } 
    else 
    { 
     amount = 0; 
    } 
    clienttype = "SELFCARE"; 
    vendorcode = '<%=vendorcode%>'; 
    dataCount = '<%=cryptHandler.encrypt("8",session.getId()+session.getId())%>'; 
    reqNum = '<%=cryptHandler.encrypt("1",session.getId()+session.getId())%>'; 
    seqNum = '<%=cryptHandler.encrypt("2",session.getId()+session.getId())%>'; 
    Values = "&var1=" + escape(agentcode) + "&var2=" + escape(pin) + "&var3=" + escape(amount) + "&var4=" + escape(mobile) + "&var5=" + escape(productCode) + "&var6=" + escape(clienttype) + "&var7=" + escape(operator) + "&var8=" + escape(vendorcode); 
} 
var varReq = "../Comman/requestForwarder.jsp?page=" + escape("<%=reqPageName%>") + "&reqNum=" + escape(reqNum) + "&seqNum=" + escape(seqNum) + "&dataCount=" + escape(dataCount) + Values; 
varReq = varReq.replace(/\+/g, "%2B"); 
http.open("GET", varReq, false); 
httpBuffer = http; 
reqCodeBuffer = reqCode; 
http.onreadystatechange = responseHandler; 
http.send(null); 
} 
+0

第三の画像がありません - あなたは、2つの以上のリンクを公開することはできないかもしれません...また、[ヘルプセクション](HTTPお読みください://をstackoverflow.com/help)、この質問は今は良いことではありません - あなたはそれに対して良い答えを得ることはできません。 – ppeterka

+0

コードの37行目を確認してください –

答えて

0

あなたはしかし、あなたの問題の茎は、おそらくあなたが使用しようとしているという事実である、実際にいくつかのコードを投稿したり、少なくとも、デベロッパーコンソール(CTRの+シフト+ J)

でメッセージを印刷する必要があります「メイン」実行スレッド上の同期xmlhttpRequest

悪い習慣(サーバーがあなたの要求に「回答」するまで、すべてのコードが実行されるのをブロックするので)、ブラウザーが段階的に使い始めています。したがって、新しいバージョンのChromeを使用している場合は、コードを実行していない可能性があり、同期要求について不平を言います。

Web Worker(スレッドのjsバージョン)を使用して同期XMLHTTPRequestを実行するか、可能であれば非同期バージョンを使用することをお勧めします。

さらに読書:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

+0

申し訳ありません私はstackoverflowの新機能私はこのサイトの質問を正しく質問する方法がわかりません。同じコードがmozilla firefoxに取り組んでいますが、どうすれば可能ですか?そして、私はこの理由のために本物のポイントであるあなたの主なスレッド実行のポイントを得ました。あなたの答えに感謝します。 –

+0

Mozilla Firefoxでクロムbtを使用していなくても、同期リクエスト前にページのすべてを非表示にしています –

+0

@dineshkumar - 要点は、メインスレッドで実行して尋ねられたためですサーバーが応答するのを待っている間は、他のすべてがアンサーベイされたままになることがあります。要求を行う前に物を隠すことは無関係です。このタイプのajaxを拒否したブラウザでは空のページでも失敗します。良い質問をするには、ここを見てみましょう:http://stackoverflow.com/help – enhzflep

関連する問題