JQuery Ajax – сообщение – значение повреждено

Впервые сталкиваюсь с такой странной ситуацией. Я уже работал с Ajax и параметрами разных типов. Я пытался решить это с помощью contentType, но, похоже, это не сработало.

Я пытался поиграть с такими форматами, как UTF-8 документа и contentType, как упоминалось выше.

$.ajax({
    url: "/Test",
    type: "POST",
    data: 
    {
        'ID':$(this).attr("ID"),
        'Date':$(this).attr("Date")
    },
    dataType: "json",
    cache: false
})

ID=12345&Date=01.01.2018+00%3A00%3A00 // Есть

ID=12345&Date=01.01.2018 00:00:00 // Должно быть

Из-за этого я не могу преобразовать его в тип double в Delphi (Rad Studio):

Вариант типа (UnicodeString) не может быть преобразован в Double


person René    schedule 17.07.2018    source источник
comment
Я не вижу связи с Delphi. Пожалуйста, уточните, как это связано с Delphi?   -  person Jerry Dodge    schedule 17.07.2018
comment
Сама проблема не связана с Delphi, я просто подумал, что это может помочь лучше понять ситуацию. Также, возможно, у кого-то была такая же проблема в той же ситуации, и он может легче ее распознать. Я могу удалить его, если он не должен упоминаться.   -  person René    schedule 17.07.2018
comment
Ваши данные были закодированы в формате html. Вы можете html декодировать его, если это необходимо.   -  person erikrunia    schedule 17.07.2018
comment
Неправильно истолковал сбой, он исходит из моего приложения Delphi, но все же спасибо за все комментарии, это может быть полезно в будущем.   -  person René    schedule 18.07.2018


Ответы (1)


Ваша строка была закодирована в формате html. Html Декодируйте его на стороне вашего сервера, прежде чем преобразовывать его в дату (или двойную в вашем случае?).

Большинство библиотек ajax сделают это автоматически. Это, вероятно, то, что делает ваша, следовательно, кодировка html в ваших строках даты. Странно, что вы раньше этого не замечали, ведь это вполне нормальное поведение на посте.

Чтобы исправить в Delphi, посмотрите на модуль HTTPApp. HTTPDecode и HTMLDecode (а также функции кодирования). Вы должны найти его в папке Source/Win32/Internet.

См. этот вопрос SO, так как ответ на абзац выше пришел оттуда.

person erikrunia    schedule 17.07.2018