【问题标题】:Unable to redirect to html view from ajax call in Laravel无法从 Laravel 中的 ajax 调用重定向到 html 视图
【发布时间】:2016-08-10 17:25:57
【问题描述】:

我在html 中呈现我的观点,并在laravel 中拥有我的后端api。用户从 cloudapp.azure.com/welcome.html 登录后,我的脚本 cloudapp.azure.com/js/script2.js 将用户密码发送到我的 Laravel 控制器;

//cloudapp.azure.com/js/script2.js

if(error_username == false && error_password == false){

        var details = [$("#username1").val(),$("#password1").val()];


        var url = "http://depressionapp1.westeurope.cloudapp.azure.com/index.php/";

        $.ajax({
           url: url,
           type: 'POST',
           data: {dataname: details},               
           success: function(result){

                 //THIS IS WHERE I AM HAVING PROBLEMS

                 location.href = "http://depressionapp1.westeurope.cloudapp.azure.com/welcome1.html";

                 /* or
                 var url1 =  "http://depressionapp1.westeurope.cloudapp.azure.com/" + result;
                 $.get(url1);*/


           }




        });

来自路由 url cloudapp.azure.com/index.php/ 的我的控制器 处理请求并根据需要返回字符串“welcome.html”。

//UserController@postLogin works fine and returns 'welcome.html'

      public function postLogin(Request $request){
   $result = DB::table('users')->select('user_id')->where('username', $request['username'])->get();
   $user = $result[0];
   $val = '';       
   if(Auth::attempt(['username' => $request['username'], 'password' => $request['password']])){

        $count = Answer::where('user_id', $user->user_id)->where('level', '<>', NULL)->count();
        if($count){
            return redirect()->route('checkLevel'); 
        }else{ 
            $val = 'welcome1.html';
        }   
   }
   $data = array('page' => $val, 'id' => $user->user_id);
   return response($val);      

}

现在,因为 Laravel 处理“welcome.html”返回的 url 路由是 cloudapp.azure.com/index.php/ 它似乎总是留在这个 url 中,并且在我的 ajax 调用成功后,我想重定向到cloudapp.azure.com/welcome1.html 的 html 页面,即。 'cloudapp.azure.com' + 结果(即 'welcome.html')。

我已尝试关注

$.ajax({
           url: url,
           type: 'POST',
           data: {dataname: details},               
           success: function(result){

                 //THIS IS WHERE I AM HAVING PROBLEMS

                 location.href = "http://depressionapp1.westeurope.cloudapp.azure.com/welcome1.html";

                 /* or
                 var url1 =  "http://depressionapp1.westeurope.cloudapp.azure.com/" + result;
                 $.get(url1);*/


           }

但我似乎卡在 Laravel 的路线上,无法重定向。

【问题讨论】:

标签: jquery ajax laravel


【解决方案1】:

您的 ajax 调用发送带有此数据的发布请求:

        data: {
            dataname: [
                $("#username1").val(),
                $("#password1").val()
            ]
        },

在您的控制器中,您正在获取不同的值

$request['username']

所以你的 ajax 数据应该是这样的:

        data: {
            username: $("#username1").val(),
            password: $("#password1").val()
        },

修复此问题,然后检查浏览器控制台以查找任何其他错误。

【讨论】:

  • 伙计们,控制器工作正常,如上所述,我已经很好地处理了登录,一切正常!这不是我的问题,当我返回时,字符串'welcome.html' 并且我试图重定向到 javascript 中的 html 视图,这就是我的问题。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多