【问题标题】:Laravel: Post request keeps getting 302Laravel:发布请求不断收到 302
【发布时间】:2020-04-06 05:22:03
【问题描述】:

我正在发布似乎成功到达控制器的帖子,但浏览器一直显示 302 响应。我正在使用dd() 记录请求,并且正在获取要适当记录的文本。我不知道为什么我得到一个302。我在下面发布了我的代码,并希望对我做错的事情有所了解。谢谢!

刀片

<form class="form" role="form" method="POST" action="{{ url('/admin/store/custom-text/update') }}">
    <div class="form-group @hasError('custom_text')">
        <textarea name="custom_text" value="{{ old('custom_text') }}">
        </textarea>
        @error('custom_text')
    </div>
    <button class="btn btn-success" type="submit">Update Custom Text</button>
</form>

控制器

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests\Admin\CustomTextFormRequest;

class CustomTextController extends Controller
{
    public function index()
    {
        return view('admin.store.custom-text');
    }

    public function update(CustomTextFormRequest $request)
    {
        $customText = $request->input('custom_text');
        dd($customText);
        flash('Custom Text Updated!');
        return redirect()->back();
    }
}

CustomTextForRequest

class CustomTextFormRequest extends FormRequest
{

    public function authorize()
    {
        return true;
    }


    public function rules()
    {
        return [
            'custom_text' => 'required|string',
        ];
    }
}

** 路线 **

Route::post('admin/store/custom-text/update', 'Admin\CustomTextController@update');

【问题讨论】:

  • 因为您的控制器更新方法中有dd(),当您发布表单时,当前结果是什么?

标签: laravel laravel-5


【解决方案1】:

我同意,@keizah 是正确的。

=> HTTP 响应状态码 302 Found 是执行 URL 重定向的常用方式

return redirect()->back();
// or 
return back();
// brings you back to the previous page which means you are being redirected

所以答案是

发布请求不断收到 302,因为您正在控制器中执行重定向,因此您将获得状态 302 而不是 200

如果您认为我们误解了您的问题,也许您可​​以告诉我们您期望的状态是什么?或者你到底想要发生什么

【讨论】:

    【解决方案2】:

    你得到302 状态码,因为在一些操作之后你被重定向回来

    return redirect()->back();
    

    如果您通过 ajax 请求更新表单并且不想要 302 状态代码,请删除下面的行并返回一些数据

    $data = 'saved-custom-text';
    return $data;
    

    【讨论】:

    • 你的代码和发布的代码有什么区别?
    • 答案就是解决方案,对吗?解决办法是什么?
    【解决方案3】:

    尝试在表单中包含CSRF token

    <form class="form" role="form" method="POST" action="{{ url('/admin/store/custom-text/update') }}">
        @csrf
        <div class="form-group @hasError('custom_text')">
            <textarea name="custom_text" value="{{ old('custom_text') }}">
            </textarea>
            @error('custom_text')
        </div>
        <button class="btn btn-success" type="submit">Update Custom Text</button>
    </form>
    

    【讨论】:

      【解决方案4】:

      代替:

      flash('Custom Text Updated!');
      return redirect()->back();
      

      您可以使用此语法使用 Flash 消息将用户重定向回来。

      return back()->with('success_message', 'Custom Text Updated!');
      

      【讨论】:

        猜你喜欢
        • 2021-07-25
        • 1970-01-01
        • 2017-07-14
        • 2015-11-12
        • 2021-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        相关资源
        最近更新 更多