我应该检查Ajax请求或不

我应该检查Ajax请求或不

问题描述:

AJAX:我应该检查Ajax请求或不

$.ajax({ 
     type:"POST", 
     url: "{{url('/post/add')}}", 
     data: { 
     "_token": "{{ csrf_token() }}", 
     "id": id 
     }, 

     success: function (data) { 
      var res = $.parseJSON(data); 
      if(res == true) 
      { 
       alert('hi'); 
      } 
     } 
    }); 

Laravel控制器:我已经检查了控制器Ajax请求。

public function add(Request $request) 
{ 
    if($request->ajax()) 
    { 
     // codes 
     echo json_encode(TRUE);die; 
    } 
} 

但是,我注意到我不需要检查ajax请求吗?并且不检查ajax请求如何得到警报?

public function add(Request $request) 
    { 
      // codes 
      echo json_encode(TRUE);die 
    } 
+0

如果调用是ajax调用,那么如果statment返回一个json响应,否则返回一个视图,在这种情况下,您将能够使用相同的函数来检索json或视图,具体取决于您如何调用函数 –

+0

@Aschraf即使没有,如果陈述我返回JSON响应,它运行良好。 – Steve

+0

我知道,但是如果您有其他视图需要相同的数据,但不使用ajax访问数据呢?你会做什么?你会检查它是否不同于ajax,然后返回一个视图,即时说什么,如果你只是使用这个Ajax然后你不需要添加if语句 –

该检查只是有效请求的一个额外措施。正如您已经注意到的那样,这并不是必要的,但是如果您希望按照您的预期验证请求是通过AJAX请求发送的 - 您可以。

您应该使用$request->ajax()来确定if the request is the result of an AJAX call。如果您只使用方法中的AJAX请求,则可以省略此检查。

它只是取决于你。您可以根据请求是否是AJAX请求来做不同的事情。例如返回JSON或普通视图。

如果您希望只有AJAX请求才能访问您的路由,那么您可以使用中间件来保护这些路由。有关更多信息,请检查this answer

+0

即使没有,如果语句我返回JSON响应,它正在运行好。 – Steve

+0

@Steve。是。那是问题吗?请求是一个请求。 Laravel不在乎。如果你愿意,它可以让你接受不同的东西。 –