Visualizzazione risultati 1 fino 5 di 5

Discussione: Invio immagine con Ajax Post

  1. #1
    tipsnow non è connesso Utente AlterBlog
    Data registrazione
    08-04-2016
    Messaggi
    5

    Predefinito Invio immagine con Ajax Post

    salve, la mia applicazione jquery mobile necessita di un caricamento di un'immagine nel db
    prima ho implementato il metodo form action indirizzandolo al php dedito all'upload, funzionava perfettamente ma non c'era modo di catturare gli echo di risposta con conferma di avvenuto invio quindi ho implementato il trasferimento con ajax:

    Codice HTML:
    <form action="#" method="post" enctype="multipart/form-data">
                        Title: <input type="text" name="title" id="title" />
                        Question Text: <input type="text" name="text" id="text" />
                        <input type="hidden" id="idUtente" name="idUtente" value="">
                        Select image to upload:
                        <input type="file" name="fileToUpload" id="fileToUpload">
                        <input type="submit" value="Upload Image" name="submit" id="submit">
                    </form>
    Codice:
    $('form').submit(function (e) {
                        e.preventDefault();
                        $.ajax({
                            type: 'post',
                            url: 'http://esempio.altervista.org/esempio.php',
                            data: new FormData(this),
                            dataType: 'text',
                            contentType: false,
                            processData: false,
                            success: function (data) {
                                alert("data");
                                return false;
                            },
                            error: function (xhr, textStatus, errorThrown) { alert(xhr.status + ': ' + errorThrown); alert("errore"); }
                        })
                    });
    mentre su server questo codice:
    Codice PHP:
    <?php
    $target_dir
    = "uploads/";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if(
    $check !== false) {
    echo
    "File is an image";
    $uploadOk = 1;
    } else {
    echo
    "File is not an image.";
    $uploadOk = 0;
    }
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo
    "Sorry, your file is too large.";
    $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
    echo
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
    echo
    "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    //qui ho messo la connessione al db e la query insert (che col form action funzionava)
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
    echo
    "Sorry, there was an error uploading your file.";
    }
    }
    ?>
    con questo codice pero' oltre a farmi aspettare circa 30 secondi dopo aver premuto submit non trasferisce il file nel db ne fa le query dell'insert ma mi restituisce un echo vuoto, come fare?

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ad occhio la cosa più strana è che la risposta restituita sia vuota, nonostante ci siano echo letteralmente ovunque.

    La prima ipotesi da verificare è che non accadano altri errori durante l'elaborazione in PHP, quindi userei error_reporting(E_ALL) all'inizio del codice, in modo da avere qualche informazione in più.
    Anche se non è molto elegante, aggiungerei un'ulteriore echo all'inizio dello script, in modo da verificare che almeno quella viene restituita.

    Se questo non funziona, controllerei più attentamente cosa succede durante le comunicazioni.

  3. #3
    tipsnow non è connesso Utente AlterBlog
    Data registrazione
    08-04-2016
    Messaggi
    5

    Predefinito

    il problema deve stare nel lato della richiesta ajax poiche' con un
    PHP:
    <?php
    echo "ciao";
    ?>
    fa la stessa cosa , niente risposta

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho provato ad eseguire quel codice, sembra funzionare.
    L'unica accortezza in più che ho usato è stata racchiudere la parte in JavaScript all'interno di:
    Codice:
    $(function() {
        ...
    });
    Puoi mostrare una pagina in cui si verifica il problema?

  5. #5
    tipsnow non è connesso Utente AlterBlog
    Data registrazione
    08-04-2016
    Messaggi
    5

    Predefinito

    se intendi l'html la pagina e' questa
    Codice HTML:
       <!-- Tipcreate -->
            <div data-role="page" id="tipcreate">
                <div data-role="header">
                    <a href="#Tips" data-iconpos="notext" data-role="button" data-icon="flat-cross"></a>
                    <h1>Ask Something:</h1>
                </div>
                <div data-role="content">
                    <form action="#" method="post" enctype="multipart/form-data">
                        Title: <input type="text" name="title" id="title" />
                        Question Text: <input type="text" name="text" id="text" />
                        <input type="hidden" id="idUtente" name="idUtente" value="">
                        Select image to upload:
                        <input type="file" name="fileToUpload" id="fileToUpload">
                        <input type="submit" value="Upload Image" name="submit" id="submit">
                    </form>
                    <img id="image" style="width:50%;height:50%"/>
                </div>
            </div>
    @edit Ho notato che il problema si verifica soltanto quando il type della richiesta e' post, con il php( che mi restituisce solo l'echo ciao )se la richiesta e' get tutto funziona mentre post si verifica il problema

    @@edit ok il tipo posso anche mettere post ma se con esso in data metto il mio {new FormData(this)} mi da errore,altrimenti ad esempio { name: "John", time: "2pm" }, funziona tutto
    Ultima modifica di tipsnow : 21-06-2016 alle ore 18.46.16

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •