Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    22

    Jquery Ajax non vede IF

    Salve ho questo problema
    in un Form devo controllare se al caricamento di un file, questo file è già presente sul server.
    Al cambiamento dello stato (onChange) del pulsante input Type=file viene richiamata la funzione che fa la richiesta Ajax al server , che è questa:
    codice:
    <script type="text/javascript"> 
    function controllaFile(){ 
    var upfile = document.getElementById("upfile").files[0].name; //recupero il nome del file $.ajax(
    { type: "POST", 
    url: "controlla_file.php", 
    data: "upfile="+upfile, 
    dataType: "html", 
    success: function(data) { 
    alert(data);// controllo che la risposta sia giusta 
     if (data.risposta == "1") { 
    alert("nome file già esistente! Rinomina il file" );
     } 
    else 
    { alert("hai inserito un allegato" );
     } 
    }, error: function() { alert("Chiamata fallita, riprovare!"); } }, "json"); } </script>
    questo è il file php :
    Codice PHP:
    <?php include ('config.php');
     
    $allegato $_POST['upfile']; 
    if (
    file_exists('allegati/'.$allegato)) 
    $msg "1"; } 
    else { 
    $msg"0"; } 
    echo 
    json_encode( array('risposta'=> $msg ) ); 
    ?>
    Il problema è che l'alert che compare è sempre il secondo (hai inserito un allegato), è come se la condizione data.risposta=="1" fosse sempre falsa.
    Dove sbaglio????

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova cosi
    if (data.risposta == 1) sicuro che ti serva un array? L'alert risponde quello che vuoi?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    22
    la pagina php risponde bene
    nell'alert che ho messo di prova ho qusto tipo di risposta

    {"risposta":"1"} o {"risposta":"0"} a seconda che il file è presente oppure no.

    a questo punto nel primo caso (1) dovrebbe comparire l'alert

    ("nome file già esistente! Rinomina il file" )

    ed invece passa sempre direttamente al secondo


    ("hai inserito un allegato" )


    Ho provato anche senza le virgolette come hai detto tu...ma stesso risultato.

    Dove sbaglio??

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma secondo me non ti serve un array di risposta del php per capire se c'è il file nella cartella
    Codice PHP:
     <?php include ('config.php');
     
    $allegato $_POST['upfile']; 
    if (
    file_exists('allegati/'.$allegato)) 
    $msg 1; } 
    else { 
    $msg0; } 
    echo 
    $msg
    ?>
    codice:
    if (data == 1) {
    Oppure se vuoi proseguire con l'array leggi :qui ma per quello capito non ti serve
    :ciauz
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    imposti il datatype ad "html" ma fai tornare da php un json, l'errore mi sembra ovvio...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    22
    Nulla da fare
    vede sempre e solo un if

    ho fatto le prove anche con true e false nella pagina php

    secondo me c'è qualche errore di sintassi che non riesco a vedere nella funzione Js.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    22
    Originariamente inviato da Vindav
    imposti il datatype ad "html" ma fai tornare da php un json, l'errore mi sembra ovvio...

    se imposto dataType: "json",

    non cambia niente , solito errore

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Scusa insisto ma a cosa ti serve avere un array risposta dal momento che comunque la domanda è una "Esiste il file?" (si/no) non lo capisco
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    22
    Infatti non mi serve avere per forza un array

    ho provato anche l'esempio che hai postato, ma il risultato non cambia

    Secondo me è qui che sbaglio,ma in data type, cosa devo mettere??

    Codice PHP:
    type"POST"
    url"controlla_file.php"
    data"upfile="+upfiledataType
    "html"
    Se metto JSON mi da errore chiamata fallita

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Scusa, ma hai controllato cosa viene passato allo script php?

    Prima che la chiamata ajax parta, qual è il valore della variabile "upfile" ?

    Guarda con firebug sul pannello net e guarda sulla request cosa esattamente viene passato in post

    Inoltre se la cartella "allegati" è pubblica (senza se : deve esserlo, altrimenti non riusciresti a cercare in una sottocartella a partire dalla cartella in cui si trova questo script), penso che tu stia creando più complessità di quella necessaria. Se vuoi semplicemente sapere se esiste o meno un file sotto quella cartella ti basta fare una chiamata HEAD al file stesso:

    codice:
    function controllaFile(){ 
        //recupero il nome del file 
        var upfile = "allegati/" +  document.getElementById("upfile").files[0].name; 
        alert('cerco il file ' + upfile);
    
        $.ajax({ 
            type: "HEAD", 
            url: upfile,
            success: function() { 
                alert('il file esiste');
            },
            error: function() {
                alert('il file non esiste');
            }
        })
    };
    prova questo codice e se non funziona posta esattamente il messaggio d'errore, le info dettagliate sulla request e sulla response
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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.