【发布时间】:2019-10-06 17:12:41
【问题描述】:
在 laravel 5.8 项目中,我尝试使用 JQuery AJAX 函数向项目路由 url 之一发送 get 请求,响应状态为 200,这意味着请求成功执行,但每次函数返回当前视图 HTML回应
我试图删除我的 php 函数中的所有代码并只返回一个 JSON 响应但仍然得到 HTML 我还尝试将数据类型更改为 JSON 或文本并将缓存设置为 false 但响应仍然相同我什至尝试过评论路由请求的所有功能,并且总是会出现相同的响应 我还尝试了这里或其他网站上提供的许多其他解决方案,但没有办法解决它
这是路由请求的我的控制器功能:
public function seen()
{
$user = User::find(Auth::user()->id);
$notifications = $user->notification;
foreach($notifications as $notification){
$notification->seen = 1;
$notification->save();
}
return response()->json(['status' => 'seen']);
}
函数路径如下:
Route::get('/seen', 'CustomAuth\AuthController@seen')->middleware('authUser');
最后是 AJAX 函数:
function seen(){
let url = '/seen';
$.ajax({
type: 'GET',
url: url,
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
}
我将 contenType 设置为 text 时得到的响应:
我希望我会得到一个我试图在函数中返回的 JSON 响应,但我认为请求没有到达函数并且问题出在 ajax 请求中
【问题讨论】:
-
尝试添加 echo json_encode($data);在 PHP 和 jquery 中尝试 Datatype:json
-
我遇到了类似的问题,强制标头(特别是内容类型为 txt)有帮助。
-
我得到一个包含响应属性的对象
{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}@NiketJoshi -
@KareemSaeed 你能打印出响应和请求标头吗?
-
您也可以尝试返回纯 json 而不是 response()->json();,我很确定有一个辅助函数可以将任何数组转换为 json。