Ciao a tutti. Ho un problema con uno script ajax.
Ho un pagina in asp che mi stampa tutte le fatture. In fondo ad ogni riga ci metto un'immagine diversa a seconda che la fattua sia pagata o meno. Cliccando sull'immagine appare un checkbox, che chekkato mi fa passare da fattura pagata a fattura da pagare e viceversa. Il checkbox mi fa partire un httprequest che mi esegue l'update e mi cambia l'immagine pagata/da pagare.
Il problema è che a volte funziona ed a volte no. Ogni fattura ha un indice cont, e a volte mi passa l'indice del checkbox che ho selezionato precedentemente. Vi posto il codice della pagina asp
Questa è la pagina request per l'ajaxcodice:<% str = "SELECT * from e_scadenziario WHERE year(data_scadenza)>" & (year(date)-1) & " ORDER BY data_scadenza DESC" %> <% Set objRs = Server.CreateObject("ADODB.Recordset") set objRs = objConn.Execute(str) paridispari = 1 c = 1 If not objRs.EOF then response.write "<table align=center width=100% cellspacing=1 cellpadding=2 bgcolor=#ffffff>" response.write "<tr class=""dieci"" align=""center"">" response.write "<td>data scadenza | fattura</td>" response.write "<td>rif</td>" response.write "<td>tot fattura</td>" response.write "<td>P</td>" response.write "</tr>" Do while NOT objRs.EOF c = c + 1 paridispari = paridispari + 1 If paridispari mod 2 = 0 then bgalterna = "#FFFFFF" Else bgalterna = "#E1F1FF" End If np_visa = objRs("num_prog") np_visa = quattro_cifre(np_visa) np_visa = Right(objRs("data_fattura"),2) & "-" & np_visa response.write "<tr bgcolor=" & bgalterna & ">" response.write "<td valign=top align=right class=undici width=60>" response.write sdata(objRs("data_scadenza"),"v") response.write " " response.write sdata(objRs("data_fattura"),"v") response.write "</td>" response.write "<td valign=top align=right class=undici width=80>" response.write objRs("n_fatt_fornitore") response.write "</td>" response.write "<td valign=top align=center class=undici width=20>" If objRs("status") then chi = "i_ok.gif" ch = "pagata" chstato = "0" chchk = " checked" Else chi = "i_dollaro.gif" ch = "non pagata" chstato = "-1" chchk = "" 'totale pagina visualizzata totpagina = totpagina + totfattura End If %> <div id="immagine<%=c%>"><%="<img src=image/" & chi & " alt='" & ch & "' width=16 height=16 border=0>"%></div> <DIV ID="azzstatus<%=c%>" STYLE="display:none;"> <input type="Checkbox"<%=chchk%> id="check<%=c%>" onclick="request(<%=objRs("id")%>,<%=chstato%>,<%=c%>);"> </DIV> <% response.write "</td>" response.write "</form>" response.write "</tr>" objRs.Movenext Loop response.write "</table>" Else response.write "<table align=center cellspacing=1 cellpadding=10 bgcolor=#ffffff width='100%'>" response.write "<tr>" response.write "<td valign=top align=center bgcolor=#E1F1FF class=undici>" response.write "nessuna fattura da visualizzare" response.write "</td>" response.write "</tr>" response.write "</table>" End If objRs.Close Set objRs = Nothing %> </table>
mentre la pagina amm_scad_status.asp contiene solo un updatecodice:var XMLHTTP; var stato; var idf; var cont; function request(id_fatt,status,c) { XMLHTTP=GetXmlHttpObject(); if (XMLHTTP==null) { alert ("Your browser does not support AJAX!"); return; } var url = "amm_scad_status.asp?status_id=" + id_fatt + "&status_onoff=" + status + "&c=" + c; cont=c; stato = status; idf=id_fatt; XMLHTTP.onreadystatechange=stateChanged; XMLHTTP.open("GET", url, true); XMLHTTP.send(null); } function stateChanged() { if (XMLHTTP.readyState == 4) { if (stato == -1){ document.getElementById("immagine" + cont).innerHTML= "[img]image/i_ok.gif[/img]"; document.getElementById("check" + cont).onclick = function(){request(idf,0,cont);} }else{ if (stato == 0){ document.getElementById("immagine" + cont).innerHTML= "[img]image/i_dollaro.gif[/img]"; document.getElementById("check" + cont).onclick = function(){request(idf,-1,cont);} } } } } function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }
Spero in qualcuno.
tks

Rispondi quotando
