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))