Что не так с этим кодом AJAX? Он должен изменить состояние кнопки для включения или отключения в зависимости от условий.AJAX не меняет мой JSP динамически?
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, ответ становится истинным, и если я отсоединяю USB, ответ становится ложным.
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");
}
}
1) Что такое предупреждение о значении? 2) У вас есть элемент с идентификатором «сканирование» и «секрет»? – kosa
Я уже получил код, но у меня есть вопрос ... будет AJAX продолжать идти внутрь 'if (xmlhttp.readyState == 4 && xmlhttp.status == 200)' каждый раз, когда прослушиватель событий запускается в сервлет ? – pmark019