Почтовый маршрут Laravel 5.2 возвращает обычный текст html

всякий раз, когда я отправляю запрос на публикацию в «tasks/add», я хочу, чтобы пользователь возвращался на новую страницу, но все, что я получаю, это простой текст html во всплывающем окне.

Код Route.php

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

это мой запрос ajax:

$("#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

            });

        });

У кого-нибудь была эта проблема раньше?


person Mocrosoft    schedule 17.01.2016    source источник
comment
Не могли бы вы показать, какие именно данные вы получаете?   -  person Marcin Nabiałek    schedule 17.01.2016
comment
Вы помещаете ответ в «оповещение ()», поэтому html просто отображается как текст html. Вы этого не хотите, вы хотите перенаправить на новую страницу, а не предупреждать результат   -  person tam5    schedule 17.01.2016
comment
Это был просто html страницы, которую я пытался загрузить. @tam Я удалил предупреждение из запроса ajax, но теперь сообщение ничего не делает. Когда я смотрю на свой ответ на сообщение, это просто обычный html-файл, но я хочу, чтобы этот html загружался для пользователя.   -  person Mocrosoft    schedule 17.01.2016


Ответы (1)


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

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

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

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

для перенаправления на нужную страницу в случае успеха.

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

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

Ты мог бы сказать

window.location.replace('/secrets')
person tam5    schedule 17.01.2016
comment
Это действительно решение, чтобы заставить его работать, но я хотел бы сохранить его в чистоте и обрабатывать мои перенаправления через laravel route.php. Итак, в основном я хотел бы, чтобы мой пользователь был перенаправлен на страницу «секретов» после того, как сообщение будет сделано. Это возможно? - person Mocrosoft; 17.01.2016
comment
спасибо за предложение, но он снова возвращает простой html на мой запрос ajax. В любом случае, я благодарю вас за помощь. Я оставлю свое перенаправление через ajax :) - person Mocrosoft; 17.01.2016
comment
Если я придумаю что-то еще, я дам вам знать, но я думаю, что это способ сделать это. В общем, я нахожу, что работа с Ajax в Laravel иногда может быть немного запутанной, как есть. - person tam5; 17.01.2016
comment
Я согласен. Если у вас есть предложения получше, чем использование ajax для отправки/получения запроса, вы всегда можете отправить мне сообщение. - person Mocrosoft; 17.01.2016