Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    (ajax) duplice inserimento

    Salve a tutti, sto utilizzando un form con ajax per inviare alcune variabili (metodo POST) ad un file PHP affinche' vengano inserite in un database. Tutto sembra funzionare correttamente in quanto avviene l'immisione nel database (mysql) e ritorna l'esito positivo che viene visualizzato all'interno di uno <span>. Unico problema e' che l'immisione avviene 2 volte in maniera identica (2 record con gli stessi dati). Ho provato a mettere dei controlli su variabili $_SESSION per eviitare la duplicazione, ma credo che lo script php venga ripetuto 2 volte nel giro di brevissimo ed i miei controlli non hanno risolto i problemi come avrei voluto. Allego la parte interessata di codice javascript e vi chiedo cortesemente se qualcuno notasse l'origine del problema.
    Grazie mille!

    <script type="text/javascript" language="javascript">
    var http_request = false;
    function makePOSTRequest(url, parameters) {
    http_request = false;
    timer = setTimeout("endpause()",3000); // 3 secs
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
    // set type accordingly to anticipated content type
    //http_request.overrideMimeType('text/xml');
    http_request.overrideMimeType('text/html');
    }
    } else if (window.ActiveXObject) { // IE
    try {
    http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
    }
    }
    if (!http_request) {
    alert('Cannot create XMLHTTP instance');
    return false;
    }

    http_request.onreadystatechange = alertContents;
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
    }

    function alertContents() {
    if (http_request.readyState == 4) {
    if (http_request.status == 200) {
    //alert(http_request.responseText);
    result = http_request.responseText;
    document.getElementById('myspan').innerHTML = result;
    } else {
    alert('Problema nella richiesta');
    }
    }
    }

    function get(obj) {
    var poststr = "products_id=" + escape( document.getElementById("products_id").value ) + "&produttore=" + escape( document.getElementById("produttore").value ) + "&email_address=" + escape( document.getElementById("email_address").value );
    makePOSTRequest('registra_record.php', poststr);
    }


    il form:

    <form action="javascript:get(document.getElementById('my form'));" name="myform" id="myform">
    <input type="text" value="" name="email_address" id="email_address" size="30" class="border_form" />
    <input type="hidden" value="valore" name="produttore" id="produttore" />
    <input type="hidden" value="valore" name="products_id" id="products_id" />
    <button type="submit" name="button" value="invia richiesta" onclick="javascript:get(this.parentNode);">
    [img]immagine.gif[/img]</button>
    .................................................. .......

    ...how to smile between boredom & guns...

  2. #2
    la funzione get è eseguita due volte, una volta qui
    onclick="javascript:get(this.parentNode);"
    e una volta qui
    action="javascript:get(document.getElementById('my form'));"

    A occhio l'action della form così scritto non ti serve a un tubo

  3. #3
    Era assolutamente quello... grazie davvero!!!
    problema risolto
    .................................................. .......

    ...how to smile between boredom & guns...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.