如何在laravel中发布到路由URL

时间:2016-07-09 07:55:56

标签: php laravel laravel-5

我正在使用这条路线:

Route::post('cp/admin/checkUserPassLogin','Panel\AdminController@checkUserPassLogin');

和我的控制员:

enter image description here

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests;
use DB;
use App\Quotation;
....
public function checkUserPassLogin(Request $request)
{
    echo 'test';
    return 'test';

}

在我看来:

    function login()
    {
        console.log('test');
        var email = $('#email_admin').val();
        var pass  = $('#pass_admin').val();

        if(!email || !pass)
                return ;

        console.log(email+'-'+pass);
        $.post("{{ url('/cp/admin/checkUserPassLogin') }}", {username:email,pass:pass}, function (data) {


            console.log(data);


            if(data == 'ok')
            {
                window.location.href = "..........";
            }else{

            }

        });
    }

console.log(email+'-'+pass);打印我的值,但console.log(data);没有返回任何内容。

2 个答案:

答案 0 :(得分:2)

毫无疑问,这是一个CSRF问题。在Laravel 5中,所有请求都必须通过中间件,如果没有正确的CSRF令牌,则不允许任何POST请求。要解决这个问题:

在您的视图中的某处添加:

<meta name="csrf-token" content="{!! csrf_token() !!}">

然后在你的ajax帖子中添加数据:

'_token': $('meta[name="csrf-token"]').attr('content')

看起来像这样:

$.post("{{ url('/cp/admin/checkUserPassLogin') }}", {username:email, pass:pass, '_token': $('meta[name="csrf-token"]').attr('content')}, function (data) {...});

另一种方法是将csrf-token直接添加到您的javascript中,就像使用网址一样:

$.post("{{ url('/cp/admin/checkUserPassLogin') }}", {username:email, pass:pass, '_token': "{!! csrf_token() !!}"}, function (data) {...});

答案 1 :(得分:0)

更改

$.post("{{ url('/cp/admin/checkUserPassLogin') }}", {username:email,pass:pass}, function (data) {

$.post("your route here along with the base url", {username:email,pass:pass}, function (data) {

示例:

$.post("BASE_URL + "admin/checkUserPassLogin")

在视图中的某处设置BASE_URL,最好是基本视图:

<script type="text/javascript">
    var BASE_URL = '{{ asset('/') }}';
</script>