Välkommen till webForum! Två tips: Lägg koden i kodtaggar. Och om något inlägg löser ditt problem, vänligen markera det som slutgiltigt accepterat.
sendToServer returnerar inget värde (Detta eftersom funktionen lämnas innan överföringen är färdig.) Det du får göra är att skapa en callback-funktion, som du sedan kallar på från onreadystatechange.
<html>
<head>
<script language="JavaScript">
function processChange(currentform, act, noden, funkt) {
var url = "http://x.x.x.x/cgi-bin/ajaxmain";
/* Temperature(1) and Dim(3) functionalities */
if(funkt == 1 || funkt == 3){
var inputStr = currentform.datafield.value;
if(act == 'byfield'){
url += "?node=" + noden + "&function=" + funkt + "&action=" + act + "&val=" + inputStr;
} else {
url += "?node=" + noden + "&function=" + funkt + "&action=" + act;
}
var inputInt = parseInt(inputStr);
/* Plus button */
if(act == 'plus'){
inputInt++;
}
/* Minus button */
if(act == 'minus'){
inputInt--;
}
/* Typed in text field */
if(act == 'byfield'){}
/* ..And show the user.*/
currentform.datafield.value = inputInt;
} //end temperature-dim functionality
/* ON/OFF(4) functionality */
if(funkt == 4){
var status = currentform.onoffstatus.value;
url += "?node=" + noden + "&function=" + funkt + "&val=" + status;
if(currentform.onoffstatus.value == 'ON'){
currentform.onoff.value = "Turn on";
currentform.onoffstatus.value = "OFF";
} else {
currentform.onoff.value = "Turn off";
currentform.onoffstatus.value = "ON";
}
} //end ON/OFF functionality
[b]textcallback=function(arg){
// Jag kommer att anropas så fort överföringen är färdig!
document.fooform.footext.value=arg;
}
sendToServer(url, textcallback);[/b]
} //end processChange
function sendToServer(url[b], tcallback[/b]){
var xmlObj = null[b], callback = tcallback[/b];
if(window.XMLHttpRequest){ /* The rest.. */
xmlObj = new XMLHttpRequest();
} else if(window.ActiveXObject){ /* M$IE */
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
return -1; /* No AJAX support */
}
xmlObj.onreadystatechange = function(){
/* Process the server response */
if(xmlObj.readyState == 4){
var str = xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data;
[b]callback(str);[/b]
} //end readystate == 4
} //end onreadystatechange-function
xmlObj.open("GET", url, true);
xmlObj.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=iso-8859-1" );
xmlObj.send("");
}// end sendToServer(url)
</script>
</head>
<body>
<form name="fooform">
<input type="text" name="footext" size="100" value="foo">
</form>
<form>
<input type="text" name="onoffstatus" value="ON" size="1" disabled>
<input id="xmlObjbuttononoff" type="button" name="onoff" value="Turn off" onClick="processChange(this.form, 'onoffchange', '1', '4')">
</form>
<form>
<input id="xmlObjbuttontempminus" type="button" name="temp" value="-" onClick="processChange(this.form, 'minus', '2', '1')">
<input type="text" name="datafield" value="23" size="1" onChange="processChange(this.form, 'byfield', '2', '1')">
<input id="xmlObjbuttontempplus" type="button" name="temp" value="+" onClick="processChange(this.form, 'plus', '2', '1')">
</form>
</body>
</html>
KOden är bara testad i mitt huvud, men bör funka. Om den inte gör det så hoppas jag att du fattar principen iaf.
