Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не валидный json с сервера / 20 сообщений из 20, страница 1 из 1
26.03.2014, 18:53
    #38597358
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Есть asp.net Web form
есть ajax запрос
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
.ajax({                url: location.href,
                type: "post",
                data: postData,
                success: function(response) {
                   
                    if (jQuery.type(response) == "string")
                        response = JSON.parse(response.substring(2, response.length));
                    self._finishServerOperation(response);

                }
            });



сервер отвечает


Код: c#
1.
2.
3.
4.
5.
6.
7.
SerializeDataToJson(
                                new
                                    {
                                        data,
                                        errorMsg,
                                        error
                                    })


json имеет вид "{\"data\":\"blablabla...\"}"
на клиенте получаю в response "{0|"data":"blablabla..."}"
...
Рейтинг: 0 / 0
26.03.2014, 18:53
    #38597359
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
откуда берется 0| не могу понять
...
Рейтинг: 0 / 0
26.03.2014, 19:12
    #38597378
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Dezaполучаю в responseдо преобразования или после? и зачем там обрезание производится?
...
Рейтинг: 0 / 0
26.03.2014, 19:22
    #38597386
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Shocker.Pro и зачем там обрезание производится?

с сервера приходит строка вида

Код: c#
1.
"{0|\"data: \"тут данные\", \"errorMsg\": \"\", \"error\" : \"\"}"


из за 0| она не может преобразоваться в объект, поэтому и приходится отрезать правильную часть, на сервере в дебаге, где я могу смотреть, строка имеет правильный вид
...
Рейтинг: 0 / 0
26.03.2014, 19:24
    #38597388
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
а шо таке SerializeDataToJson ?
...
Рейтинг: 0 / 0
26.03.2014, 19:32
    #38597393
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Паганельа шо таке SerializeDataToJson ?А какая разница, автор ведь показывает строку на сервере после сериализации. надо полагать - оболочка над JavaScriptSerializer
...
Рейтинг: 0 / 0
26.03.2014, 19:34
    #38597395
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Shocker.ProПаганельа шо таке SerializeDataToJson ?А какая разница, автор ведь показывает строку на сервере после сериализации. надо полагать - оболочка над JavaScriptSerializerа, ну тогда значит это баг JavaScriptSerializer
...
Рейтинг: 0 / 0
26.03.2014, 19:38
    #38597399
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Shocker.ProПаганельа шо таке SerializeDataToJson ?А какая разница, автор ведь показывает строку на сервере после сериализации. надо полагать - оболочка над JavaScriptSerializer
да, вы правы

Код: c#
1.
2.
3.
4.
5.
private string SerializeDataToJson(object data)
		{
            var serialaz = new JavaScriptSerializer() { MaxJsonLength = _control.MaxJsonLength};
			return serialaz.Serialize(data);
		}
...
Рейтинг: 0 / 0
26.03.2014, 19:39
    #38597400
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Dezaиз за 0| она не может преобразоваться в объект, поэтому и приходится отрезать правильную часть, на сервере в дебаге, где я могу смотреть, строка имеет правильный видА, что, разве после применения substring(2, response.length) она станет иметь правильный вид?

Что будет, если отправить с сервера просто тектовую строку "{\"data\":\"blablabla...\"}" - что примете на клиенте?
...
Рейтинг: 0 / 0
26.03.2014, 19:39
    #38597401
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
ПаганельShocker.Proпропущено...
А какая разница, автор ведь показывает строку на сервере после сериализации. надо полагать - оболочка над JavaScriptSerializerа, ну тогда значит это баг JavaScriptSerializer

после выполнения метода json валиден, что то происходит в невидимом для дебага коде:(
...
Рейтинг: 0 / 0
26.03.2014, 19:42
    #38597404
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Dezaпосле выполнения метода json валиден, что то происходит в невидимом для дебага коде:(вопрос в том, что реально отправил сервер и что реально появилось на клиенте

по первому вопросу - отправьте просто текстовую строку, представляющую JSON

по второму вопросу - примите строку не через аякс, обычным гетом и тумо отобразите в браузере
...
Рейтинг: 0 / 0
26.03.2014, 19:43
    #38597405
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
[quot Shocker.Pro]Dezaиз за 0| она не может преобразоваться в объект, поэтому и приходится отрезать правильную часть, на сервере в дебаге, где я могу смотреть, строка имеет правильный видА, что, разве после применения substring(2, response.length) она станет иметь правильный вид?
да, выполни в консоле

Код: javascript
1.
2.
3.
var json = "0|{\"data\":\"iVBORw0KGgoAAAANSUhEUgAAAfQAAAF3CA\"}";
var response = JSON.parse(json.substring(2, json.length));
response 
...
Рейтинг: 0 / 0
26.03.2014, 19:45
    #38597407
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Dezaда, выполни в консолезачем мне это выполнять в консоли, если изначально ошибка была такая:
Код: plaintext
"{0|\"data: \"тут данные\", \"errorMsg\": \"\", \"error\" : \"\"}"
а потом чудесным образом превратилась в такую:
Код: plaintext
"0|{\"data\":\"iVBORw0KGgoAAAANSUhEUgAAAfQAAAF3CA\"}"

путаетесь в показаниях, молодой человек
...
Рейтинг: 0 / 0
26.03.2014, 19:48
    #38597408
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Shocker.ProDezaда, выполни в консолезачем мне это выполнять в консоли, если изначально ошибка была такая:
Код: plaintext
"{0|\"data: \"тут данные\", \"errorMsg\": \"\", \"error\" : \"\"}"
а потом чудесным образом превратилась в такую:
Код: plaintext
"0|{\"data\":\"iVBORw0KGgoAAAANSUhEUgAAAfQAAAF3CA\"}"

путаетесь в показаниях, молодой человек

виноват, в первый раз набирал в ручную, во второй раз скопировал
...
Рейтинг: 0 / 0
26.03.2014, 19:48
    #38597409
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
не валидный json такой

Код: plaintext
"0|{\"data\":\"iVBORw0KGgoAAAANSUhEUgAAAfQAAAF3CA\"}"
...
Рейтинг: 0 / 0
26.03.2014, 19:49
    #38597410
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
тогда по substring вопросов нет
и тогда возникает великое подозрение, что в response на стороне сервера пишет кто-то еще, помимо сериализатора. Код записи вы не приводите. Способ проверки я сказал выше - ждем результатов
...
Рейтинг: 0 / 0
26.03.2014, 20:45
    #38597444
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Спасибо всем, источник проблемы найден
...
Рейтинг: 0 / 0
26.03.2014, 21:43
    #38597479
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
Deza,
Чешь вы себя мучаете так, зачем масло масленное
поставьте тип данных dataType: "json" в запросе.
и прилетать будет объект а не строка в response
парсер там встроен в библиотеке.
А не валидность будете отлавливать в секции фудло :
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.responseText);
}
...
Рейтинг: 0 / 0
26.03.2014, 23:02
    #38597516
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
DezaСпасибо всем, источник проблемы найденхоть бы сказал какой
ато я слегка офигел когда после фигурной скобки ноль увидел
...
Рейтинг: 0 / 0
27.03.2014, 12:21
    #38597928
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не валидный json с сервера
ПаганельDezaСпасибо всем, источник проблемы найденхоть бы сказал какой
ато я слегка офигел когда после фигурной скобки ноль увидел

в проекте используются UserControl и в начале json имеет индификаторы - |,s,e которые распариваются в

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
function WebForm_ExecuteCallback(callbackObject) {
    var response = callbackObject.xmlRequest.responseText;
    if (response.charAt(0) == "s") {
        if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
            callbackObject.eventCallback(response.substring(1), callbackObject.context);
        }
    }
    else if (response.charAt(0) == "e") {
        if ((typeof(callbackObject.errorCallback) != "undefined") && (callbackObject.errorCallback != null)) {
            callbackObject.errorCallback(response.substring(1), callbackObject.context);
        }
    }
    else {
        var separatorIndex = response.indexOf("|");
        if (separatorIndex != -1) {
            var validationFieldLength = parseInt(response.substring(0, separatorIndex));
            if (!isNaN(validationFieldLength)) {
                var validationField = response.substring(separatorIndex + 1, separatorIndex + validationFieldLength + 1);
                if (validationField != "") {
                    var validationFieldElement = theForm["__EVENTVALIDATION"];
                    if (!validationFieldElement) {
                        validationFieldElement = document.createElement("INPUT");
                        validationFieldElement.type = "hidden";
                        validationFieldElement.name = "__EVENTVALIDATION";
                        theForm.appendChild(validationFieldElement);
                    }
                    validationFieldElement.value = validationField;
                }
                if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
                    callbackObject.eventCallback(response.substring(separatorIndex + validationFieldLength + 1), callbackObject.context);
                }
            }
        }
    }
}
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не валидный json с сервера / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]