X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Проблема с JSON
ShowPrint
ShowPrint
Topic Starter сообщение 9.11.2017, 21:55; Ответить: ShowPrint
Сообщение #1


Всем привет.
Пытаюсь освоить ajax-загрузку файлов. Саму загрузку вроде одолел с трудом - всё грузится. Застопорился на этапе обработки результатов загрузки (success) .

Функция загрузки:
Развернуть/Свернуть


function UploadFile(objFile){
var file_data=objFile.prop('files')[0];// заносим данные файла в переменную
var formData=new FormData();// создаем новую форму
formData.append('userfile', file_data);// добавляем в форму данные файла
$.ajax({
url:'/include/ajax/get_file.php',// url обработчика
type:'POST',// передача параметров POST-методом
contentType: false,
processData: false,
data: formData,
dataType: 'json',
xhr: function(){
var xhr = $.ajaxSettings.xhr(); // получаем объект XMLHttpRequest
xhr.upload.addEventListener('progress', function(evt){ // добавляем обработчик события progress (onprogress)
if(evt.lengthComputable) { // если известно количество байт
var percentComplete = Math.ceil(evt.loaded / evt.total * 100);// высчитываем процент загруженного
$('#prgBar').val(percentComplete).text('Загружено ' + percentComplete + '%');// устанавливаем значение в атрибут value тега <progress> и это же значение альтернативным текстом для браузеров, не поддерживающих <progress>
}
},false);
return xhr;
},
// Споткнулся здесь!!!
success:function(jsonResult){
alert(typeof jsonResult);// выводит "object" !!!
var jsonData=JSON.parse(jsonResult);
}
});
}



Обработчик "тестовый":
Развернуть/Свернуть


<?php
if ($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest"){
header("Content-Type: text/html; charset=UTF-8");

$_fError=$_FILES['userfile']['error'];
if (0<$_fError){
$_Result=array("Error"=>$_fError);
}
else{
if(!@move_uploaded_file($_FILES['userfile']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/upload/'.$_FILES['userfile']['name'])){
$_Result=array("Error"=>'111');
}
else {$_Result=array("Name"=>$_FILES['userfile']['name'],"Size"=>$_FILES['userfile']['size']);}
}
echo json_encode($_Result);
}
?> 



Консоль выдаёт ошибку JSON.parse():
Прикрепленное изображение


При том, что сама-же консоль в ответе определяет тип данных именно как json:
Прикрепленное изображение


yury_mwIxman, miketomlinfedornabilkin, и другие ГУРУ - подкиньте, идею в чём может быть проблема, плиииззз...

Заранее признателен.


Сообщение отредактировал ShowPrint - 9.11.2017, 21:56
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 9.11.2017, 22:57; Ответить: ixman
Сообщение #2


Михаил, я в своё время пытался изобрести такой же велосипед, но где-то тоже наступил на грабли и решил использовать стороннее решение. Это конечно плохо, но зато я сэкономил время.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 10.11.2017, 0:59; Ответить: ShowPrint
Сообщение #3


Ixman, Иван, жалко бросать велосипед когда он на ходу, но небольшая восьмерка на колесе. Попробую ещё выровнять восьмёрку "натяжкой спиц".

Нагуглил что чаще всего такие ошибки появляются когда в json попадают не символьные переменные. Попробую ещё поэкспериментировать с обработчиком.

Спасибо за участие
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 10.11.2017, 10:56; Ответить: ixman
Сообщение #4


ShowPrint, если что-то получиться, то я буду рад узнать что и как.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 10.11.2017, 12:00; Ответить: ShowPrint
Сообщение #5


(Ixman @ 10.11.2017, 13:56) *
если что-то получиться, то я буду рад узнать что и как
Иван, ну тебе-то известно, что "восьмерка" на колесе исправляется элементарно, это современная молодежь в таких случаях тащит велик в ремонт или выбрасывает и покупает новый.  :)

Ночером пришла в голову мысля что, как и в какой последовательности проверить надо, тем более что у меня есть пара-тройка функций которые работают с json (написанные после твоей подсказки - эзотерического "пинка")  :)

Собственно по шагам:
1. Воткнул в обработчик возврат "тестового" json, не связанного с вытаскиваемыми данными:

$_Result=array("Name"=>"FileName.jpg","Size"=>"123456789");
echo json_encode($_Result);

Результат: ошибка сохранилась (в других функциях всё в норме).
Вывод: что-то не так в JS-функции.

2. Посмотрел по справочнику параметры функции $.ajax и сравнил с другими своими рабочими вариантами.
Ошибка сразу нашлась.  :) Как говорится
Дело было не в бобине, дело было не в реле - раздолбай сидел в кабине и мчудила на крыле


Вариантов решения оказалось два, поправить надо JS-функцию, оба варианта они вытекают из:
Вызов JSON.parse(str) превратит строку с данными в формате JSON в JavaScript-объект/массив/значение.


Вариант 1. Убрать строку

dataType: 'json',

В этом случае результат получается как строка, которую можно распарсить в json

Вариант 2. Убрать строку

var jsonData=JSON.parse(jsonResult);

В этом случае просто продолжать работу с jsonResult  как с json

Ошибка кода в стартпосте заключалась в том, что возвращаемый php-обработчиком результат уже был объявлен как json, а я его пытался распарсивать как строку, как результат - получал то, что получал в консоли  :)

[offtopic]Скучно жить - чудес всё-таки не бывает  :D[/offtopic] 


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Zel.Biz - CPA/CPI партнерка и Push-сеть (XML JSON feed)
0 zelads1 869 27.12.2020, 17:05
автор: zelads1
Открытая тема (нет новых ответов) Zel.Biz - Push/CPA/CPI рекламная сеть (XML JSON feed)
0 Zelads 1672 14.10.2020, 13:22
автор: Zelads
Открытая тема (нет новых ответов) Проблема с админкой
5 Prok 2315 29.7.2019, 20:04
автор: dvakarandasha
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПроблема с таблицей, которая выводится через скрипт
7 vanchester 1336 15.2.2019, 19:06
автор: Artos_mw
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПроблема в тегах при сохранении контента
1 Kord18 1405 13.3.2018, 18:19
автор: Evgeniy3200


 



RSS Текстовая версия Сейчас: 29.3.2024, 15:48
Дизайн