2016-02-24 5 views
0

Доброе утро Все,Ext, form.submit всегда возвращает отказ

Я пытаюсь очень простой form.submit и по какой-то причине он всегда возвращается как неудача. Также используется локальный веб-сервис в .NET.

Должно быть, мне не хватает чего-то очень простого ... или, может быть, чего-то с возвратом данных.

Я приложил несколько фотографий, чтобы показать, как я пытаю:

image1 - form.submit

enter image description here

IMAGE2 - service.cs

enter image description here

image3 - как я возвращаю результат из .NET webservice local enter image description here

Извинения за изображения ... по какой-либо причине вырезать и вставлять код не работает.

Спасибо! Стивен

здесь картина отладчик в Webservice первой строки переменная вар второй ряд (х2) преобразуется в JSON с помощью JsonConvert.SerializeObject enter image description here

, наконец, является фотографии отладчик из браузера после возвращения enter image description here

Я также пытался понять CORS ... поэтому я добавил следующее к моей web.config, который не помогает

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*"/> 
     <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 

введите код здесь

здесь светлячок отладчик enter image description here

Я настроил мой web.config, чтобы варианты и все еще получаю ошибку STATUS КОД 405 МЕТОД НЕ РАЗРЕШЕНО

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*"/> 
     <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
     <add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" /> 
     <!--<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />--> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 

ХОРОШО. .. Я внес некоторые изменения ... Я удалил эти строки из своего web.config и добавил страницу Global.asax.cs со следующим:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
    if (HttpContext.Current.Request.HttpMethod == "OPTIONS") 
    { 
     HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, X-Requested-With"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000"); 
     HttpContext.Current.Response.End(); 
    } 
} 

Теперь, похоже, проходит успешно, но все же происходит сбой. Я что-то здесь? Это мой формат json?

результат

newresult

json

network

+0

странно, все кажется правильным. можете ли вы убедиться, что ответ {success: true}? какая версия extjs используется yo? – LightNight

+0

Я добавил отладочные представления как с моего веб-сервера, так и с браузера по возвращении, чтобы показать результаты. также я верю, что я нахожусь в версии6, но не уверен, как проверить – solarissf

+0

в консоли check Ext.getVersion() – LightNight

ответ

2

Ваш ответ имеет обратную косую черту, которая не является действительным JSON. Он должен быть {"success":true} без обратной косой черты.

Это должно быть связано с двойной сериализацией. Там, где вы отлаживали его, все в порядке. Но вы должны сериализовать его еще раз в другом месте. Удостоверьтесь, что вы избегаете двойной сериализации.

+0

его версия 6.0250. Я попытался вернуть var json.ToString(), который является «{success = True}», но это тоже не так. Если я изменю свой браузер на Chrome, я получаю ответ на предполетный код, недействительный код статуса http 405 – solarissf

+0

, наконец, получил его. спасибо за вашу помощь, прогуливая меня через это! это была комбинация возврата плохого формата json, он должен был возвращать объект напрямую, а не строку. затем добавление файла global.asax и редактирование заголовков httpcontext в application_beginrequest – solarissf

Смежные вопросы