当从ajax到控制器进行调用时,路由在laravel5中不起作用

时间:2016-01-30 12:06:45

标签: ajax laravel

我正在登录页面上点击事件调用jquery函数。从那里我调用$ ajax函数。这个$ ajax函数应该调用控制器并处理函数并返回响应。我使用routes.php连接了它。在运行应用程序时,我收到“请求页面未找到404错误”的错误。我认为路由存在一些问题。有人帮助我解决这个问题。提前谢谢。

routes.php如下

Route::post('signin', 'LoginController@signin'); 

click事件的Jquery函数位于login_register.js文件中

$("#form-login").on("submit",function(e){
    e.preventDefault();
    var log_password = "";
    var log_name = $("#log_username").val();
    var password = $("#log_password").val();

    if(password.trim() !== "")
    {
        log_password = md5(password);
    }
    $(".loginmessage").html('');
    $(".login").attr("disabled",true);
    $("#spin_signin").addClass('show');
    var req =  new Request();
    req.data =
    {
        "email":log_name,
        "userpassword":log_password

    };

    req.url = "signin";
    RequestHandler(req,processlogin);

});

ajax调用是在jquery.ajax.js文件中。我将类型命名为POST,数据类型为JSON

function RequestHandler(request,response,resdata){
    $=jQuery.noConflict();
    var domain = "http://localhost/laravel_login/public/";
    var tempurl = domain+request.url;
    if(request.isfulluri){
    tempurl = request.url;
    }

$.ajax({

    type: request.type,
    url: tempurl,
    data: request.data,
    datatype:request.datatype,
    success: function(data){
        if(resdata != null && resdata != '')
        response(data,resdata);
        else
        response(data);
    },
    error: function(err){
        if(err.responseText == null || err.responseText == ""){
            alert("Error: Check your internet connection");
        }
        else{
            alert("Error:"+err.responseText);
        }
    }
});

我的控制器类(LoginController.php)包含

public function signin(){
    $response = array();
    $useremail = $this->input->post('email');
    $userpassword = $this->input->post('userpassword');
    if($useremail == '' || $userpassword == ''){
        $response['iserror'] = TRUE;
        $response['message'] = 'Please fill all the fields';
        echo json_encode($response);
        return;
    }
    else{

        $result = $this->UserAuthenticate->loginUser($useremail,$userpassword);

        echo json_encode($result);
        return;
    }   
}   

1 个答案:

答案 0 :(得分:0)

请确保为您的完整路径定义了路线:

laravel_login/public/signin

您可以使用php artisan route:list --path=signin查看您的路线是否已注册。

另外,在您的控制器方法中,而不是

echo json_encode($result);
return;

我会用

return response()->json($result);

因为这会自动为您设置正确的HTTP标头。这样,传递给javascript回调函数的变量将是一个Javascript对象,无需额外的解析。

相关问题