php - Laravel 在 PHP 控制器中访问 JSON 数据
问题描述
我有这个 AJAX 函数,它将数据发送到路由:
$.ajax({
url : '/home/update_user_data',
type : "post",
contentType: 'application/json;charset=UTF-8',
data : {'userid' : $('#user-general-i').data('userid'), 'datatype' : datatype, 'newcontent' : newcontent},
success : function(response) {
console.log("update_user_data", response);
if (response['success'] == true) {
console.log('success');
} else {
}
},
error : function(xhr) {
console.log("update_user_data", xhr);
}
});
在路线中我无法弄清楚如何访问数据,通常我可以使用$data->value
,但在这里它不起作用。我假设是因为我不序列化表单。
这是我尝试访问数据的方式:
public function update_user_data(Request $data) {
try {
error_log($data);
error_log(print_r($data->all(), True));
error_log($data->query('userid'));
error_log($data->userid);
error_log($data->datatype);
error_log($data->newcontent);
} catch (\Exception $e) {
return ['success' => false, 'message' => $e->getMessage()];
}
return ['success' => true, 'message' => 'Konnte Nutzer nicht updaten'];
}
我在请求中设置了 laravel 文档,并尝试了所有访问数据的方法,但我只是得到一个空字符串,没有错误。
但是error_log($data);
显示了请求,我可以看到数据在那里:
userid=4777&datatype=gender&newcontent=1
编辑
我可以得到上面的字符串:
error_log($data->getContent());
但是我不能得到具体的值,我可以使用正则表达式来提取它们或拆分字符串,但这感觉超级hacky和错误。
编辑
我还尝试更改 AJAX 请求:
data : JSON.parse(JSON.stringify(({'userid' : $('#user-general-i').data('userid'), 'datatype' : datatype, 'newcontent' : newcontent})))
我还尝试添加:
dataType: "json"
但遗憾的是什么都没有改变,一切error_log
都是空的。
Laravel 版本:Laravel 框架 5.8.27
解决方案
在您的情况下,$data
是Request
对象而不是实际数据。
您首先需要从请求对象中获取数据。
试试下面:
public function update_user_data(Request $request) {
$data = $request->all();
// you can now be able to access your data like:
$data['userid'];
$data['datatype'];
$data['newcontent'];
//...
}
或者在较新版本的 Laravel 中,您可以使用request()
全局函数从Request
对象中获取数据。
request('userid'); // gives you userid passed via ajax i.e `4777`
更改您的 ajax 请求:
contentType: 'application/json',
data: JSON.stringify( {"userid": $('#user-general-i').data('userid')} ),
// ...
推荐阅读
- amazon-route53 - Route 53 上的 DNS CNAME 记录不重定向
- math - 带有其他输入的数学计算的微调器选项
- flutter - BoxDecoration 中的容器颜色几乎是透明的,带有预定义的颜色函数
- django-models - 错误:(models.E015)“排序”指的是不存在的字段、相关字段或查找“名称”
- python - 可以 Plotly 渲染 .gv 文件吗?
- java - 为什么刷新jdbc swing表中的按钮后数据多次出现?
- xamarin.forms - CrossFirebasePushNotification.Current.RegisterForPushNotifications(); 抛出 NullReference iOS
- unity3d - 改变卡位
- python - BeautifulSoup 无法在 Div 之间获取文本
- c# - 如何在没有 azure 的情况下发布和部署多渠道机器人?