Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2016, 12:34
Интересующийся
Отправить личное сообщение для dismantled Посмотреть профиль Найти все сообщения от dismantled
 
Регистрация: 11.02.2016
Сообщений: 18

form.submit и WCF
Что-то ExtJS всё больше печалит в качестве выбранного фреймворка. Вероятно, я не умею его готовить. ОК.

Создал простую форму: Комбобокс, Файл и Сабмит-кнопка.
var form = this.lookupReference('myform').getForm();

if (form.isValid()) {
    form.submit({
        url: '/Services/Service.svc/Upload',
        success: function (form, action) { debugger; },
        failure: function (form, action) { debugger; }
    });
}

От сервера приходит КОРРЕКТНЫЙ ответ. 200 и нужный JSON. Но!
1. Хром 48.0.2564.
В процессе обработки выдаёт:
Resource interpreted as Document but transferred with MIME type application/json: "https://sdsdw.com/Services/Service.svc/Upload

При этом в заголовках отправленных данных я чётко вижу:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarylABtsdmuqaDjyzUd

В итоге заходит в блок failure, где я вижу корректный ответ от веб-сервиса:
action.response
Object {responseText: "{"FileLength":9426,"FilePath":"BlaBla"}", responseXML: document, status: 200}


2. ИЕ11
Если с Хромом ещё как-то можно жить, то здесь всё ещё более печально. В процессе загрузки формы:
SCRIPT5007: Не удалось получить свойство "keys" ссылки, значение которой не определено или является NULL
Файл: bootstrap.js, строка: 105, столбец: 9


После сабмита:
SCRIPT65535: Недопустимый вызывающий объект
Файл: javascript:<URI>, строка: 1, столбец: 1

Не заходит ни в блок Саксесс, ни в Фэил, а просто тупо предлагает мне скачать json-файл, в котором, опять же, корректные данные от сервера.

Я даже не знаю, господа... Если ещё какие сведения нужны для валидации проблемы, постараюсь предоставить.

А особенно грустно, что гугление по проблемам\кейсам ExtJS в 90% случаев выдаёт в основном какие-то плесневелые ответы с их сапорт-форума, датированные прошлым десятилетием.

Последний раз редактировалось dismantled, 20.02.2016 в 12:37.
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2016, 11:32
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Сложно сказать вот так наугад, но проверьте еще заголовок Content-type в ответе сервера. Что там?
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2016, 18:10
Интересующийся
Отправить личное сообщение для dismantled Посмотреть профиль Найти все сообщения от dismantled
 
Регистрация: 11.02.2016
Сообщений: 18

Вот заголовок ответа:

HTTP/1.1 200 OK
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Mon, 22 Feb 2016 14:52:00 GMT


Вот реализация интерфейса на сервере:
[OperationContract(Name = "Upload")]
[DataContractFormat]
[WebInvoke(Method = "POST", UriTemplate = "Upload",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
UploadedFile Upload(Stream uploading);


Тут стоит отметить, что в процессе я пробовал реализацию через FormData() и XHR - особых проблем не заметил. Что не нравится ExtJS - не пойму. Может ему каких-то своих библиотек не хватает?
Ответить с цитированием
  #4 (permalink)  
Старый 22.02.2016, 18:47
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Все же сильно кажется что в ответе проблема... Можете пару скриншотов сделать? В девелоперской консоли хрома выделите проблемный запрос и сделайте снимки вкладок headers, preview, response
Ответить с цитированием
  #5 (permalink)  
Старый 22.02.2016, 20:08
Интересующийся
Отправить личное сообщение для dismantled Посмотреть профиль Найти все сообщения от dismantled
 
Регистрация: 11.02.2016
Сообщений: 18

headers, preview, response
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2016, 13:38
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Вычислил проблему. Тут не в эксте дело, а в браузерных заморочках. Заставьте сервер возвращать Content-Type: text/html и все пройдет, надеюсь.

Кстати спасибо за пост, у себя нашел точно такую же проблему и пофиксал )
Ответить с цитированием
  #7 (permalink)  
Старый 24.02.2016, 23:07
Интересующийся
Отправить личное сообщение для dismantled Посмотреть профиль Найти все сообщения от dismantled
 
Регистрация: 11.02.2016
Сообщений: 18

Фуф! Мдеее... С Экстом точно не соскучишься.
Infarch,
В общем ваша рекомендация помогла. Большое спасибо. Неистово плюсую в карму!

Но оно упорно заходило в фэил. Оказывается, это фича! Решение нашлось тут. Это из-за того, что у меня форма с файловым полем.
Ответить с цитированием
  #8 (permalink)  
Старый 25.02.2016, 11:18
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

А, success отсутствовал? Да, я забыл про него ) У меня все ответы в JSON получают его автоматически.

Насчет "не соскучишься" соглясен. Но в пределах разумного все же. success это документированная фишка, а вот поведение браузера при контент-тайпе отличном от текста это уже не к Сенче вопрос. Надо понимать что при аплоаде файлов фреймворк делает множество неявных вещей чтоб симулировать ажакс-запрос: создает скрытый iframe, сабмитает форму через него, ну и прочие интересные вещи.

Последний раз редактировалось Infarch, 25.02.2016 в 11:22.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax запрос к Wcf сервису возвращает Object Object Itogoo333 Общие вопросы Javascript 6 13.01.2016 03:02
Отправить форму POST из JS. form.submit() отличается от нужного результата Owyn Общие вопросы Javascript 5 17.07.2013 19:59
jquery + wcf, вывести результат на странице вместо диалогового окна efes jQuery 1 08.11.2012 19:10
не корректное поведение form.submit(); chertjaga Общие вопросы Javascript 3 26.04.2011 12:14
Вызов WCF сервиса из JavaScript. xeonet AJAX и COMET 0 04.06.2009 22:49