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

    Restituzione valore da un oggetto

    Ciao a tutti
    Tramite un oggetto debbo restituire un valore di una chiamata ajax ecco il code:

    codice:
    var obj = {
        xmlhttp: function(type, url, formdata) {
            const xhttp = window.XMLHttpRequest ? new XMLHttpRequest : ActiveObject("Microsoft_XMLHTTP");
            xhttp.onreadystatechange = function() {
                if(xhttp.status === 200 && xhttp.readyState === 4){
                    return xhttp.responseText;
                }
            }
            xhttp-send(formdata);
        }
    },
    
        search: function(){
            const elSearch = document.querySelector("input[name=search]");
            let response = obj.xmlhttp("POST", "http://......", elSearch.value);
            alert(response);
        }
    }
    con questo code mi da "undefined" come mai?

    Ma se metto un alert al responseText i valori ci sono tutti.
    Ultima modifica di techno; 16-04-2021 a 12:37

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,888
    Quote Originariamente inviata da techno Visualizza il messaggio
    Ciao a tutti
    con questo code mi da "undefined" come mai?
    Quello che stai restituendo è il valore di ritorno della funzione di callback che hai definito, e non della funzione più esterna.

    Questa è la funzione che restituisce il tuo valore:
    codice:
    function() {
      if(xhttp.status === 200 && xhttp.readyState === 4){
        return xhttp.responseText;
      }
    }
    Non puoi gestire la cosa in questo modo, quando lavori in "asincrono": devi usare dei callback, o delle Promise o una struttura equivalente.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

  3. #3
    [QUOTE=alka;25561880]Quello che stai restituendo è il valore di ritorno della funzione di callback che hai definito, e non della funzione più esterna.

    Questa è la funzione che restituisce il tuo valore:
    codice:
    function() {
      if(xhttp.status === 200 && xhttp.readyState === 4){
        return xhttp.responseText;
      }
    }
    Ok ho capito grazie.
    Ultima modifica di techno; 17-04-2021 a 10:08

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 © 2021 vBulletin Solutions, Inc. All rights reserved.