会话闪存无法在laravel中运行

时间:2018-02-23 06:28:26

标签: php ajax laravel session

我创建了一个页面,加载后会在ftp服务器上将文件从一个文件夹移动到另一个文件夹。我希望在完成后闪烁一条消息。但我正在使用Session :: flash,但它不起作用。如果我错了,请检查代码段并纠正我。文件正在正常移动。

test.blade.php

$(document).ready(function(){
    $(window).load(function(){
        $.ajax({
            type: 'POST',
            url: '{{url('/ftp')}}',
            success: function(data) {
              alert(data);
              console.log(data);
            }
        });
      });
    });

TestController.php

function ftp()
{
  $ftp_server;
  $ftp_username;  
  $ftp_userpass; 
  $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
  // $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

  if (@ftp_login($ftp_conn, $ftp_username, $ftp_userpass))
  {
    echo "Connection established.<br>";
    $path = "./test";
    $file = "ftp_test.txt";
    $file_list = ftp_nlist($ftp_conn,$path);

    if(in_array($file,$file_list))
    {
      $old_path="./test/ftp_test.txt.";
      $new_path="./test1/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.<br>";
        Session::flash('success','File moved from a to b');
      }
      else {
        echo "File not moved.";
      }
    }
    else
    {
      $old_path="./test1/ftp_test.txt.";
      $new_path="./test/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.<br>";
        Session::flash('success','File moved from b to a');
      }
      else {
        echo "File not moved.";
      }
    }
  }
  else
  {
    echo "Couldn't establish a connection.<br>";
  }



  // close connection
  ftp_close($ftp_conn);
}

}

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

刀片中的

$(document).ready(function(){
$(window).load(function(){
    $.ajax({
        type: 'POST',
        url: '{{url('/ftp')}}',
        success: function(data) {
          $('#message').text(data);
          console.log(data);
        }
    });
  });
});

控制器

 function ftp()
{
  $ftp_server;
  $ftp_username;  
  $ftp_userpass; 
  $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
  // $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

  if (@ftp_login($ftp_conn, $ftp_username, $ftp_userpass))
  {
    echo "Connection established.<br>";
    $path = "./test";
    $file = "ftp_test.txt";
    $file_list = ftp_nlist($ftp_conn,$path);

    if(in_array($file,$file_list))
    {
      $old_path="./test/ftp_test.txt.";
      $new_path="./test1/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.<br>";

      }
      else {
        echo "File not moved.";
      }
    }
    else
    {
      $old_path="./test1/ftp_test.txt.";
      $new_path="./test/ftp_test.txt";
      if(ftp_rename($ftp_conn,$old_path,$new_path))
      {
        echo "File moved from $old_path to $new_path.";

      }
      else {
        echo "File not moved.";
      }
    }
  }
  else
  {
    echo "Couldn't establish a connection.<br>";
  }



  // close connection
  ftp_close($ftp_conn);
}

}

我所拥有的只是删除了你的会话内容。在您的刀片中创建一个名为message的ID(要显示消息的位置)的元素,然后将其附加到结果中。请注意,您的结果必须只是文本,当您在php脚本中回显时,ajax会将这些文本输出作为数据并返回给您。您可以根据需要设置消息元素的样式。

如果您计划以html数据的形式返回,请使用$('#message').html(data);代替$('#message').text(data);

答案 1 :(得分:0)

正如@kerbholz所说,如果您需要使用Session :: flash显示消息,则无法使用 ajax
以下是显示flash消息的方法

在您的控制器中

Session::flash('success', 'It\'s a flash message !');
return redirect()->back();

在您的刀片视图中

@if (Session::has('success'))

    <div class="alert alert-success">{{ Session::get('success') }}</div>

@endif