Забрать возвращение XMLHttpRequest send


добрый день, я использую следующий код для загрузки изображений:

   function uploadImage($form){
        $form.find('.progress-bar')
            .removeClass('progress-bar-success')
            .removeClass('progress-bar-danger');
    var formdata = new FormData($form[0]); //formelement
    var request = new XMLHttpRequest();

    //progress event...
    request.upload.addEventListener('progress',function(e){
        $('.progress').removeClass('hidden');
        var percent = Math.round(e.loaded/e.total * 100);
        $form.find('.progress-bar').width(percent+'%').html(percent+'%');
    });

    //progress completed load event
    request.addEventListener('load',function(e){
        $('.progress').removeClass('active');
        $form.find('.progress-bar').addClass('progress-bar-success').html('Upload completo');
    });

    request.open('post', 'server.php');
    request.send(formdata);

}

файл server.php содержит:

<?php
    foreach ($_FILES as $name => $file) {

        $tmp_file = $file['tmp_name'];
        $filename = $file['name'];

        move_uploaded_file($tmp_file, 'uploads_folder/'. $name.$_POST['categoria_nome'].'.jpg');
    }
    return true;
? >

Хотел бы знать, как поймал return файла server.php и в функцию загрузки?

Author: William Pereira, 2015-05-15

1 answers

Нужно добавить еще oscultador событий, изменений ready state.

Например:

request.onreadystatechange = function () {
    if (request.readyState < 4)                             // está à espera de resposta
        console.log('A carregar...');
    else if (request.readyState === 4) {                    // 4 = A resposta do servidor está carregada
        if (request.status == 200 && request.status < 300)  // http status entre 200 e 299 quer dizer sucesso
            alert(request.responseText);                    // ou usa o xhr.responseText de outra maneira
    }
}

, Или с помощью request.addEventListener('readystatechange ', function(){ // etc...

Для пойдешь результаты от сервера к клиенту, вы можете использовать так:

echo '{"done": true, "message": "hello world!"}';

И в JavaScript

var resObject = JSON.parse(request.responseText);

И там творишь alert(resObject.message); даст "hello wordl!"

Вы также Можете использовать в PHP json_encode(array);, но это мало что может быть более практичным, как я положил сверху.

 1
Author: Sergio, 2015-05-15 23:12:28