POST-запросы перенаправляются на GET-запрос - PullRequest
0 голосов
/ 05 октября 2018

Я имею дело с веб-сайтом (много устаревшего кода), и я нашел проблему, которую не знаю, как решить.Wed использует контроллеры codeigniter и шаблоны веток, проблема в том, что когда он отправляет пост-запрос, он перенаправляется на запрос get с тем же URL-адресом (теряя данные), есть идеи о том, как это перенаправление может быть выполнено?

Вот как выполняется запрос (та же проблема с html-формой)

$('#send_form').click(function(){
    var selected =$('#profile_select').val();
    $.ajax({
        url:"{{ base_url }}myurl/encuestas/perfil_interna",
        method:"post",
        data:{
            selected:selected
        }
    }).done(function(response){
        console.log(response);
    }).fail(function(err){
        console.log(err);
    });
}); 

это форма

<form action="{{ base_url }}myurl/encuestas/perfil_interna">
    <select multiple name="profile_questions[]" id="profile_select">
          {% for question in questions %}
              <option value="{{question.id}}" id="qid_{{question.id}}">{{ question.text }}</option>
          {% endfor %}
     </select>
     <input type="hidden" name="{{csrf.name}}" value="{{csrf.hash}}"/>
     <input type="submit" value="Enviar" id="send_form" >
 </form>

Я пытался сделать запрос с помощью ajaxи форма, с тем же результатом

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Добавьте этот код из действия javascript:void()

<form action="javascript:void()">
<select multiple name="profile_questions[]" id="profile_select">
      {% for question in questions %}
          <option value="{{question.id}}" id="qid_{{question.id}}">{{ question.text }}</option>
      {% endfor %}
 </select>
 <input type="hidden" name="{{csrf.name}}" value="{{csrf.hash}}" id="token"/>
 <input type="submit" value="Enviar" id="send_form" >

$('#send_form').click(function(){
var selected =$('#profile_select').val();
var token=$('#token').val();
$.ajax({
    url:"{{ base_url }}myurl/encuestas/perfil_interna",
    method:"post",
    data:{
        selected:selected,
        _token:token
    }
}).done(function(response){
    console.log(response);
}).fail(function(err){
    console.log(err);
});

});

0 голосов
/ 05 октября 2018

Вы должны добавить return false; в конце функции щелчка следующим образом:

    $('#send_form').click(function(){
    var selected =$('#profile_select').val();
    $.ajax({
        url:"{{ base_url }}myurl/encuestas/perfil_interna",
        method:"post",
        data:{
            selected:selected
        }
    }).done(function(response){
        console.log(response);
    }).fail(function(err){
        console.log(err);
    });
  return false;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...