1

私のこの AJAX コードの何が問題になっていますか? 条件に基づいて、ボタンの状態を有効または無効に変更する必要があります。

function loadXML(){
var xmlhttp;
if (window.XMLHttpRequest)
{
    xmlhttp = new XMLHttpRequest();
}
else
{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            /* alert (xmlhttp.responseText); */
            if(xmlhttp.responseText == true) {
                document.getElementById('scan').disabled=false;
                document.getElementById('secret').value = "true";
            }
            else if(xmlhttp.responseText == false){
                document.getElementById('scan').disabled=true;
                document.getElementById('secret').value = "false";
            }  
        }
}
xmlhttp.open("GET", "ScanJobServlet", true);
xmlhttp.send();
}

setInterval("loadXML()", 5000 );

この関数は、サーブレットの応答に変化があるかどうかを確認するために 5 秒ごとに実行されています。

これが私のサーブレットです。USBを差し込むと応答がtrueになり、USBを抜くと応答がfalseになるイベントリスナーがあります。

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    //super.doGet(req, resp);       

    PrintWriter out = resp.getWriter();

    RemovableStorageEventListener listener = new RemovableStorageEventListener() 
    { 
        public void inserted(Storage storage) {
            status = true;
    }
        public void removed(Storage storage) {
            status = false;
        } 
    }; 

    BundleContext bc = AppManager.getInstance().getBundleContext();
    StorageManager sm = StorageManager.getInstance(KSFUtility.getInstance().getApplicationContext(bc));
    sm.addListener(listener);

    if (status==true)
    {
        out.print("true");
    }
    else
    {
        out.print("false");
    }

}
4

2 に答える 2

1

このコードでは、

if (status==true)
  {
    out.print("true");
  }
else
  {
    out.print("false");
  }

リテラル"true"andを返してい"false"ます。true引用符なしで andを使用してみてくださいfalse。JavaScript では、二重引用符はリテラルを示すため、and はand"true"とは"false"異なります。更新しました:truefalse

if (status==true)
  {
    out.print(true);
  }
else
  {
    out.print(false);
  }
于 2013-07-02T01:32:46.750 に答える
0

JavaScriptコードで、これを試してください:

(xmlhttp.responseText == "true")

それ以外の

(xmlhttp.responseText == true)

(xmlhttp.responseText == false)についても同じですが、 (xmlhttp.responseText == "false")に変更します (引用符付き)

于 2013-07-02T01:32:47.660 に答える