Sending request is the asynchronous operation ,here is the code of sending on the widget:
function getRequest() { http_request = false; if(window.XMLHttpRequest) { http_request = new XMLHttpRequest();//create a new XMLHttpRequest() if (http_request.overrideMimeType) {//set MIME type http_request.overrideMimeType("text/xml"); DEBUG("dDisp", "sendRequest","http_request is XMLHttpRequest!"); } } else if(window.ActiveXObject) { try { http_request = new ActiveXObject("MSXml2.XMLHTTP"); DEBUG("dDisp", "sendRequest","http_request is MSXml2.XMLHTTP!"); } catch(e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); DEBUG("dDisp", "sendRequest","http_request is Microsoft.XMLHTTP!"); } catch(e) { DEBUG("dDisp", "sendRequest","http_request is not match!");} } } if(!http_request) { DEBUG("dDisp","sendRequest","Can't create XMLHttpRequest object "+http_request); return false; } return http_request; } /** * send the request */ function getResponseText(){ DEBUG("dDisp","sendRequest","Start to open XMLHttpRequest "); var vurl = document.getElementById("serverUrl").value; DEBUG("dDisp", "GetResponseText","Input URL is: " + vurl); DEBUG("dDisp","sendRequest","Start to open XMLHttpRequest "); try { http_request = new XMLHttpRequest(); http_request.open("post",vurl,true); http_request.onreadystatechange = function(){//callback function if (http_request.readyState==4){ DEBUG("dDisp", "ResponseData", http_request.status+"-"+http_request.readyState); DEBUG("dDisp", "getResponseHeader", http_request.getResponseHeader("Content-Type")); DEBUG("dDisp", "getResponseText", http_request.responseText); } } http_request.setRequestHeader("Content-Type", "text/xml") http_request.setRequestHeader("charset", "GBK"); http_request.setRequestHeader("Widget-IMEI", "102"); http_request.setRequestHeader("Widget-Timeout", "20"); http_request.setRequestHeader("Widget-Action","Report"); //reportXml content var reportXml = "<WidgetScriptResultResp>"; reportXml += i; reportXml += "</WidgetScriptResultResp>"; DEBUG("dDisp", "Loop:", i); http_request.send(reportXml); } catch (e) { DEBUG("dDisp","sendRequest","Failed to open XMLHttpRequest "); break; } } DEBUG("dDisp","sendRequest","Finished!"); }
onreadystatechange() is the callback function of XMLHttpRequest,you can hanld the response of web service. readyState :0--before the open();1--before the send();2--request have been sent.3--request are handling with.4--request have been done.