Страница 1 из 2

Ошибка JSON.parse

Добавлено: 15 мар 2016, 00:15
spocher102
Mozilla выдаёт ошибку SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data при запуске на локальном сервере. При этом тот же код на реальном сервере работает на ура. В чем может быть дело?

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 10:44
Asmodey
Думаю, надо смотреть в сам ошибочный json.
КО.

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 13:57
s1mplyV
Возможно не хватает памяти... проверить сколько в php.ini, memory_limit стоит на хостинге и на локальном.

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 18:17
AVATOR
Проверь валидность json-а тут http://jsonlint.com/
Если он валидныый то добавь сюда пример и мы сможем тебе сказать что не так.

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 18:31
spocher102
$(document).ready(function(){
	var imagesCount = 0;
	var maxImages = 6;
	var imagesList = {};
$(function () {
      var $image = $('#image');

      $('#modal').on('shown.bs.modal', function () {
	$('.controls').hide();
	$('.progress').hide();
        $image.cropper({
          built: function () {
          }
        });
      }).on('hidden.bs.modal', function () {
	$('#submit-avatar-button').attr('disabled', 'true');
	$image.attr('src', '');
        $image.cropper('destroy');
      });
	$image.on('load', function(){
	    		$image.cropper({
			aspectRatio: 1,
			crop: function(data){
				var d = $image.cropper('getData');
				d.filename = $image.attr('src');
				$('#avatar-data').val(JSON.stringify(d));
			},
			dragMode: 'crop',
			autoCrop: true,
 			autoCropArea: 1,
			movable: false,
			scalable: false,
			zoomable: false,
			toggleDragModeOnDblclick: false,
			background: false,
			viewMode: 0,
			minCropBoxWidth: 100,
			minCropBoxHeight: 100
		});
                $('#submit-avatar-button').removeAttr('disabled');
	});
	$('.r_left').on('click', function(){
		$image.cropper('rotate', -90);
	});
	$('.r_right').on('click', function(){
		$image.cropper('rotate', 90);
	});

      $('#avatar-file').bind('change', function(){
	var data = new FormData();
	var error = '';
	jQuery.each($('#avatar-file')[0].files, function(i, file) {

            if(file.name.length < 1) {             	
               error = error + ' Файл имеет неправильный размер! ';             
            }
            data.append('file-'+i, file);
	});
	$.ajax({
	    url: '/modules/upload_resize.php',
	    data: data,
	    cache: false,
	    contentType: false,
	    processData: false,
	    type: 'POST',error: function (xhr, ajaxOptions, thrownError) {
//         	alert(xhr.responseText);
// 	        alert(thrownError);
	    },
	    xhr: function () {
	        var xhr =  $.ajaxSettings.xhr();
	        xhr.upload.addEventListener("progress", function (evt) {
	            if (evt.lengthComputable) {
	                var pB = $('.progress-bar'), percentComplete = evt.loaded / evt.total, progLabel = Math.round(percentComplete * 100) + "%";
	                pB.attr('style', 'width: '+progLabel);
			pB.text(progLabel);
	            }
	        }, false);
	        return xhr;
	    },
	    beforeSend: function () {
	        $('.progress').show();
		$('.controls').hide();
	    },
	    complete: function () {
		$('.progress-bar').text('Готово.');
	        $('.progress').delay(2000).fadeOut(500);
		$('.controls').show();
	    },
	    success: function(data){
		$image.cropper('destroy');
		$image.attr('src', data);
	    }
	});
	});
	$('#submit-avatar-button').on('click', function (){
		var imageList = $('#image_selection'), selectImage = imageList.children('#select');
		var data = $('#avatar-data').attr('value');
		$.ajax({
			url: '/modules/addavatar.php',
			data: {'avatar-data':data},
			type: 'POST',
			error: function(xhr, ajaxOptions, thrownError){
//         	alert(xhr.responseText);
// 	        alert(thrownError);
			},
			success: function(data){
				data = JSON.parse(data);
				var n = $('<li id="'+data.filename+'"></li>').insertBefore(selectImage);
				n.append('<img width="50" src="data:image/jpeg;base64,'+data.mini+'" />');
				imagesList[data.filename] = true;
				$('<button type="button" class="btn btn-danger pull-right">Удалить</button>').appendTo(n)
				.on('click', function(){
					imagesList[n.attr('id')] = false;
					n.remove();
					imagesCount--;
					if (imagesCount > 0){
						$('#sendimages').removeAttr('disabled');
					} else {$('#sendimages').attr('disabled', true);}
					$('#image-selection-button').show();
				});
				imagesCount++;
				if (imagesCount>=maxImages){
					$('#image-selection-button').hide();
				}
				if (imagesCount > 0){
					$('#sendimages').removeAttr('disabled');
				} else {$('#sendimages').attr('disabled', true);}
				$('button[data-dismiss="modal"]').click();
			}
		});
	});
	$('#sendimages').on('click', function (){
		$('form#hidden').children('input[type="hidden"]').attr('value', JSON.stringify(imagesList));
		$('form#hidden').children('input[type="submit"]').click();
	});
    });
});

function selectImage(){
	$('#avatar-file').click();
}
http://jsonlint.com/ Ошибку показывает:
Error: Parse error on line 1:
$(document).ready(fu
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'
, а как ее исправить не могу допереть. Главное на реальном хосте работает все.

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 18:40
Asmodey
"....$(document).ready(function(){..." - Это на что ругается, или что ругается?

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 18:43
spocher102
По ходу на что ругается.

Не объяснимая фигня какая-то :twisted:

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 19:32
Asmodey
Так оно совсем на json не похоже.

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 19:40
spocher102
Да я и рад бы, суть то в том, я скрипт на фрилансе закызывал, мне один сделал, залил на хост. (там все работает), и слился куда то.
А мне что бы прилепить к своему сайту надо что бы на локалке под openserverom работало. Я скрипт скачал, запускаю на локалке, и на тебе эта ошибка. И вот в чем дело не пойму, то ли openserver тупит, то ли код неверен(хотя он работает на хосте). Вот как разобраться теперь?

Поэтому JSON не JSON мне роли не играет. Как его работать заставить на локалке?

Отладчик выдает при запуске с локалки:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

И не работает ничего

Исходя из того что на реальном хосте работает, предполагаю что дело в openserver. Только что поправить не представляю. Помогите плиз.

Re: Ошибка JSON.parse

Добавлено: 15 мар 2016, 21:08
GeekHacker
Вы уверены, что в JSON.parse() передаёте именно данные в json-формате?
И, между прочем, отладчик ругается именно на первую строку данных, а не на первую строку скрипта:
неожиданный символ в строке 1 столбца 1 из данных json.

Так что не в том направлении копаете.

Проверяйте что прилетает в ответ на ajax-запрос от скрипта /modules/addavatar.php