Visualizzazione risultati 1 fino 7 di 7

Discussione: PHP non riceve le variabili!

  1. #1
    Guest

    Predefinito PHP non riceve le variabili!

    Salve, scusate il disturbo, ho un piccolo problemino con un form per l'upload di file.
    Codice HTML:
    <form  action="#" id="myform" method="post">
    			    <input type="file" name="myfile" id="myfile"><br>
    			    <input id="mysubmit" type="submit" value="Upload File to Server" onclick="imgup()">
    			</form>
    Questo è il form che dovrebbe inviare i dati ad una funzione JS

    Codice HTML:
    function imgup(){
    				var miofile = $('#myfile').val();
    				$.post("save.php", {myfile: miofile} ,function (data){ alert("Booo"); })			
    				
    			}
    La quale a sua volta, premendo il bottone Upload me la invia alla pagina PHP

    Codice PHP:
    $uploaddir = '../Include/games_icon/';

    $uploadfile = $uploaddir . basename($_FILES['myfile']['name']);


    echo
    '<pre>';
    if (
    move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)) {
    echo
    "Il file e' valido ed e' stato caricato correttamente.\n";
    } else {
    echo
    "Non e' stato caricato alcun file!\n";
    }
    purtroppo ho provato anche con il debug ma all'array $_FILES['myfile'] non arriva nessun valore, come posso fare?? grazie in anticipo

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Penso che più un problema relativo a PHP, sia un problema del tuo script javascript.
    Infatti, usando il metodo jQuery.post ($.post), fai una normale richiesta http di tipo POST alla tua pagina php ( e non una multipart/form-data ).

    Una possibile soluzione puoi trovarla qui: http://stackoverflow.com/questions/5...th-jquery-ajax
    Se hai problemi con l'inglese o con il funzionamento dello script, non esitare a fare ulteriori domande.
    Ultima modifica di javascripter : 09-09-2015 alle ore 21.23.23

  3. #3
    Guest

    Predefinito

    L'inglese l'ho capito ma invece non ho capito nulla di come dovrei mettere giù ip mio script, riesci a farmi un esempio? Grazie

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    È molto semplice.
    Bisogna sfruttare la nuova interfaccia FormData, introdotta in XMLHttpRequest Level 2.

    Quello che dovresti fare è costruire per bene il form, impostando il suo attributo enctype a multipart/form-data e poi gestire il tutto con un semplice script.
    Ti faccio un'esempio funzionante.

    html
    Codice HTML:
    <form id="form-upload" action="/target.php" method="POST" enctype="multipart/form-data">
    	<input type="file" name="file">
    	<input type="hidden" name="upload">
    	<button type="submit">Invia</button>
    </form>
    javascript (nativo, no jquery)
    Codice:
    // da eseguire quando dom è pronto o la pagina è stata caricata
    var form = document.querySelector('#form-upload');
    
    form.addEventListener('submit', function(e) {
    	var xhr = new XMLHttpRequest();
    	var data = new FormData(form);
    
    	xhr.open('POST', '/target.php', true);
    	
    	xhr.onreadystatechange = function() {
    		if(xhr.readyState == 4 && xhr.status == 200) {
    			alert(xhr.responseText);
    		}
    	};
    	
    	xhr.send(data);
    	e.preventDefault();
    });
    php (codice di esempio, a scopo di debug)
    Codice PHP:
    if(isset($_POST['upload'])) {
    header('Content-Type: application/json; charset=utf-8');

    $res = array();
    $res['files'] = $_FILES;
    $res['post'] = $_POST;

    echo
    json_encode($res);
    }
    Per ulteriori esempi sul funzionamento di FormData, vedi qui: https://developer.mozilla.org/en-US/...rmData_Objects
    Ultima modifica di javascripter : 09-09-2015 alle ore 22.02.16

  5. #5
    Guest

    Predefinito

    Riusciresti a spiegarmelo con jquery? Nel js normale non ci capisco quasi niente

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Non ci vuole nulla a `convertire` lo script in jQuery.
    E comunque nelal pagina che ho aggiunto afine del post, c'è proprio un esempio in jquery...

    Codice:
    $('#form-upload').submit(function(e) {
      var fd = new FormData(this);
    
      $.ajax({
        url: "/target.php",
        type: "POST",
        data: fd,
        processData: false,  // tell jQuery not to process the data
        contentType: false,   // tell jQuery not to set contentType
        success: function(data) {
           alert(data);
        }
      });
    });

  7. #7
    Guest

    Predefinito

    Si si scusa, lo ho visto dopo che era alla fine della pagina

Regole di scrittura

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