Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как передать два параметра через ajax ?

Как передать два параметра через ajax ?


     14.11.2015    Все вопросы » jQuery    1107

вопрос
Здравствуйте, есть небольшая проблема с js скриптом по загрузке файлов. Проблема в том что нужно передать два параметра через $.ajax но из-за этого не могу принять на сервере значения, всегда приходит null.
Скрипт :
var files;

// Вешаем функцию на событие
// Получим данные файлов и добавим их в переменную
$('input[type=file]').change(function(){
    files = this.files;
});

$('.button').click(function( event ){
    event.stopPropagation(); // Остановка происходящего
    event.preventDefault();  // Полная остановка происходящего

    // Создадим данные формы и добавим в них данные файлов из files
    var data = new FormData();
    $.each( files, function( key, value ){
        data.append( key, value );
    });
    
    // Отправляем запрос
    $.ajax({
        url: '/engine/ajax/upload_screen.php',
        type: 'POST',
        data: data,
        cache: false,
        dataType: 'json',
        processData: false, // Не обрабатываем файлы
        contentType: false, // Так jQuery скажет серверу что это строковой запрос
        success: function( respond, textStatus, jqXHR ){

            // Если все ОК
            if( typeof respond.error === 'undefined' )
            {
                // Файлы успешно загружены, делаем что нибудь здесь
                var files_path = respond.files;
                var html = '';
                $.each( files_path, function( key, val ){ html += val +'<br>'; } )
                $('.ajax-respond').html( html );
            }
            else
                console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error );
        },
        error: function( jqXHR, textStatus, errorThrown ){
            console.log('ОШИБКИ AJAX запроса: ' + textStatus );
        }
    });
});
PHP
foreach( $_FILES as $file )
{
    $file_ext = @end(explode('.',$file['name']));
    if(in_array($file_ext, array('jpg', 'jpeg', 'gif', 'png')))
    {
        if( move_uploaded_file( $file['tmp_name'], $uploaddir . $file['name'] ) )
            $files[] = realpath( $uploaddir . $file['name'] );
        else
            $error = true;
    }
    else
        $error = true;
}

$data = $error ? array('error' => 'Ошибка загрузки файлов.') : array('files' => $files );

echo json_encode( $data );


Этот код работает отлично, но когда передаю вместо
data: data,
это
data: { data: data, title: status},
Приходит null, как не пытался получить значения.

С js у меня плохо, по этому прошу помощи. Спасибо.

Ответил: vitnet


Так не пробовали?
    var data = new FormData();
    $.each( files, function( key, value ){
        data.append( key, value );
        data.append('title', 'status');
    });

        ...
        type: 'POST',
        data: data,
        cache: false,
        ...

4 комментария

vitnet
Эксперт

vitnet - 15 ноября 2015 00:49 -

***Комментарий удален***

PunPun
Эксперт

PunPun - 15 ноября 2015 00:53 -

vitnet, проблема в том что data выступает в роли переменной
$_FILES
.

well​

vitnet
Эксперт

vitnet - 15 ноября 2015 01:42 -


Response
{"files":["\/var\/....oft.net\/uploads\/cam.png"],"title":"status"}

PunPun
Эксперт

PunPun - 15 ноября 2015 01:45 -

vitnet, спасибо, действительно работает.

well​

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх