【发布时间】:2018-10-18 22:45:59
【问题描述】:
我在尝试检查请求是否为 ajax 时遇到问题。这是我的代码:
路线
Route::post('cookies-alert', 'CookiesController@weUseCookies')->name('cookies.weuse');
控制器
namespace app\Http\Controllers;
use Illuminate\Http\Request;
class CookiesController extends Controller
{
public function weUseCookies(Request $request)
{
if($request->ajax()){
return response()->json(['status' => 'successful']);
}else{
return response()->json(['status' => 'error']);
}
}
}
表单(使用 Laravel 集合,它会自动创建 _token)
{{ Form::open(['route' => ['cookies.weuse', ''], 'method' => 'POST', 'id' => 'cookie-form']) }}
....
<button type="submit">Ok</button>
{{ Form::close() }}
还有js
$('#cookie-form').on('submit', function(e){
e.preventDefault();
// .....
$.ajax({
url: url,
method: 'POST',
dataType: 'JSON',
data: data
}).done( function (response) {
var res = response;
if( res.status == 'successful' ){
console.log(res.status);
}else{
showError('error :(');
}
});
});
我尝试过这种方式
$.ajax({
url: url,
type: 'POST',
data: data,
dataType: 'JSON',
success: function (data) {
console.log(data);
}
});
并使用来自 https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js 的 jquery 3.2.1
但它总是从我的控制器返回“错误”。
我也尝试像this 一样使用 Request::ajax(),但它会跳过 if{} 并从我的控制器转到 else{} 选项。
我做错了什么?
我的代码可以在本地运行,但不能在服务器上运行
【问题讨论】:
-
记得将 CSRF 令牌添加到您的表单中。
{{ csrf_field() }}如果你没有设置meta标签,那就是。 -
它已经添加到我的表单中
标签: php json ajax laravel response