2017-02-21 6 views
1

Я использую NanoHTTPD как веб-сервер в своем Android-приложении, я отправляю некоторую дату, используя функцию SubmitCheckedItemsForm() в клиенте.Почему я получаю информацию о методе «GET» при отправке данных из клиента IE 11.0?

В случае с сервером веб-сервера я могу получить информацию о методе POST, когда я lanuch код как в FireFox, так и в Chrome, , но я получаю информацию о методе GET, когда я lanuch код в IE 11.0? Зачем?

сервера Код

@Override 
public Response serve(IHTTPSession session) { 
    String uri = session.getUri(); 
    Method method = session.getMethod(); 
    Utility.LogError("Method: "+method); 
} 

HTML

<form action="" method='post' enctype='multipart/form-data' id="FormForAction"> 
</form> 

JS

function SubmitCheckedItemsForm(action) { 

    var mytemp = GetArrayOfCheckedItems(); 
    var formID = "#FormForAction"; 

    $(formID).unbind("submit"); 

    alert(mytemp); 

    $(formID).submit(function (eventObj) { 

     $(formID).empty(); 

     $('<input />').attr('type', 'hidden') 
      .attr('name', action) 
      .attr('value', JSON.stringify(mytemp)) 
      .appendTo(formID); 
    }); 

    $(".FilenameCheckboxForSelect").prop("checked", false); 

    $(formID).submit(); 
} 

Модифицированный JS

function SubmitCheckedItemsForm(action) { 

    var mytemp = GetArrayOfCheckedItems(); 
    var formID = "#FormForAction"; 

    $(formID).unbind("submit"); 

    alert(mytemp); 

    $(formID).submit(function (eventObj) { 

     $(formID).empty(); 

     $('<input />').attr('type', 'hidden') 
      .attr('name', action) 
      .attr('value', JSON.stringify(mytemp)) 
      .appendTo(formID); 

     $('<div>Body</div>').appendTo(formID); 
    }); 

    $(".FilenameCheckboxForSelect").prop("checked", false); 

    $(formID).submit(); 
} 
+0

Можете ли вы поделиться какой-либо снимок результата? –

+0

Спасибо! Для Astha Srivastava: я использую Utility.LogError («Метод:» + метод) получить результат – HelloCW

+0

Я уверен, что я получаю метод «GET» в IE 11.0 и получаю метод «POST» как в Firefox, так и в Chrome – HelloCW

ответ

1

Наконец я узнал это. Это, когда вы используете браузер для отправки запроса HTTP POST в Internet Explorer 11. Когда HTTP POST-запрос отправляется без тела сообщения, вместо этого используется метод GET. Это проблема с браузером. Вы также можете проверить его на странице поддержки Microsoft. Здесь: issue with Form method attribute

+0

Спасибо! Как я могу исправить это в своем коде? – HelloCW

0

Это не ваша проблема с кодом, а проблема с браузером. Если вы хотите попробовать, вы можете попробовать следующее:

Существует опция включения/отключения защищенного режима в IE, и эта опция включена по умолчанию для зоны «Интернет» и зоны «Местная интрасеть» (или любой из них). Отключение в этих 2 местах может решить проблему.

Инструменты -> Свойства обозревателя -> Безопасность -> Интернет/местная интрасеть -> Снимите флажок «Включить защищенный режим». Просто попробуйте, если он решает проблему.

Пример кода:

<form action="your_action_page" method="post" enctype='multipart/form-data' id="FormForAction"> 
    First name: <input type="text" name="fname"><br> 
    Last name: <input type="text" name="lname"><br> 
    <input type="submit" value="Submit"> 
</form> 
+0

Спасибо! Могу ли я добавить тело сообщения в свой код, чтобы исправить эту проблему? – HelloCW

+0

Если да, не могли бы вы дать мне пример кода? – HelloCW

+0

Вы можете попробовать. Если это сработало, тогда это хорошо. –