2016-01-17 1 views
1

всякий раз, когда я отправляю запрос на отправку «задач/добавлений», я хочу, чтобы пользователь возвращался на новую страницу, но все, что я получаю, - это простой текст html во всплывающем окне.Laravel 5.2 post route возвращает plain html text

Route.php код

Route::post('tasks/add', function() { 
    return view('secrets'); 
}); 

это мой Аякса запрос:

$("#frm").submit(function(e){ 
      e.preventDefault(); 
      var customer = $("input[name=customer]").val(); 
      var details = $("input[name=details]").val(); 
      var dataString = 'customer='+customer+'&details='+details; 

      $.ajax({ 
       url: "tasks/add", 
       type:"POST", 
       beforeSend: function (xhr) { 
        var token = $('meta[name="csrf_token"]').attr('content'); 

        if (token) { 
          return xhr.setRequestHeader('X-CSRF-TOKEN', token); 
        } 
       }, 
       data : dataString, 
       success:function(data){ 
        console.log(dataString); 
        alert(data); 
       },error:function(){ 
        alert("error!!!!"); 
       } 
      }); //end of ajax 

      }); 

     }); 

Любой имел эту проблему раньше?

+0

Не могли бы вы показать, что именно данные вы получаете? –

+0

Вы помещаете ответ в «alert()», поэтому html просто отображается как html-текст. Вы не хотите этого, вы хотите перенаправить на новую страницу, а не предупредить результат. – tam5

+0

Это был только html страницы, которую я пытался загрузить. @tam Я удалил предупреждение из запроса ajax, но теперь сообщение ничего не делает. Когда я смотрю на ответ своего сообщения, это просто простой html-файл, но я хочу, чтобы этот html загружал для пользователя. – Mocrosoft

ответ

0

Вы используете Ajax для вызова метода Route. Поэтому, когда Route::post(...) возвращает вид 'secrets', он возвращает его методу Ajax и удерживается переменной data. Высказывание return в вашем файле маршрутов не означает, что магия означает перенаправление на определенное представление, оно подобно любой другой функции, которая возвращает значение.

В настоящее время у вас есть alert(data), который просто говорит, что предупредил о том, что содержится в data, который в этом случае является html-текстом вашего представления.

Вместо этого вынуть и положить alert()

window.location.replace('<path/to/secrets>') 

для перенаправления на страницу, которую вы хотите на успех.

Предположим, что ваш файл Routes имеет что-то вроде:

Route::get('/secrets', function() { 
    return view('secrets'); 
}); 

Можно сказать, что

window.location.replace('/secrets') 
+0

Это действительно решение, чтобы заставить его работать, но я хотел бы сохранить его чистым и обработать мои перенаправления через laravel route.php. Поэтому я бы хотел, чтобы мой пользователь перенаправлялся на страницу «секреты» после того, как сообщение было сделано. Это возможно? – Mocrosoft

+0

спасибо за предложение, но он возвращает снова простой html в мой запрос ajax. В любом случае, я благодарю вас за помощь. Я буду продолжать перенаправление через ajax :) – Mocrosoft

+0

Если я думаю о чем-то другом, я дам вам знать, но я думаю, что это способ сделать это. В общем, я считаю, что работа с Ajax в Laravel иногда может быть немного запутанной, как это. – tam5