JSON-ответ на ajax-запрос к JS-переменным

Я пытаюсь загрузить файлы с динамическими именами и получить эти динамические имена обратно.

Подробно у меня 2 страницы form.php а также upload.php, Когда кнопка загрузки нажата на form.php затем запрос отправлен upload.phpгде 2 файла (DLpath и PhotoIDPath) загружаются на сервер с динамическими именами, например:

DLpath = документы /20161130232311i8hGn0HzJT276415832.png

А также

PhotoIDPath = documents / 20161130232311SSRqCyIbKKalock.png.

Работает нормально. Затем на upload.phpЯ кодирую эти имена файлов в виде массива JSON, т.е.

$response  = array ('DLpath'=>$Dlpath ,'PhotoIDPath'=>$PhotoIDPath);
echo json_encode($response);

И Firebug снимок выглядит так:

Я хочу получить DLpath в var jsDlpath и PhotoIDPath в var jsPhotoIDPath

И мой код (не работает), чтобы получить ответ:

complete: function(response) 
    {
    var jsDlpath=response.DLpath;
    var jsPhotoIDPath=response.PhotoIDPath;
alert(jsDlpath+" - "+jsPhotoIDPath)
}

И бдительное шоу:

неопределенный - неопределенный

Если вы можете помочь мне получить эти значения в переменных js, я буду вам очень благодарен.

2 ответа

Решение

Так как ты кодируешь себя response на стороне сервера вы должны разобрать его на стороне js, вы можете использовать $.parsejson():

success: function(response) 
{
    var response = $.parseJson(response);
     //if $.parseJson dont work, use JSON.parse

    var jsDlpath=response.DLpath;
    var jsPhotoIDPath=response.PhotoIDPath;

    alert(jsDlpath+" - "+jsPhotoIDPath)
}

ПРИМЕЧАНИЕ. Используйте success/done обратный вызов вместо завершения.

Надеюсь это поможет.

Если вы работаете в чистом JavaScript, вы обнаружите, что есть два атрибута ответа: responseText и responseXML. Вы, вероятно, хотите:

var data = JSON.parse(response.responseText);

Полный пример, используя curl с https://gist.github.com/bitdivine/7ddd943387a4350336dd (но jquery тоже подойдет) для получения открытых проблем на Github:

curl('https://api.github.com/repos/gchq/CyberChef/issues?state=open')
.then((res) => JSON.parse(res.responseText))
.then((data) => console.log(data))
Другие вопросы по тегам