php-Laravel与Angularjs验证json请求不良响应
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Laravel与Angularjs验证json请求不良响应,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2599字,纯文字阅读大概需要4分钟。
内容图文
我的Web应用程序使用Laravel作为后端框架,该框架提供了Restful API,并且在Angularjs中运行.
我通过api发送不同的请求并接收响应,并根据响应代码和所包含的数据向用户显示适当的消息.
最近,当我使用PUT方法或POST方法发送请求时,当数据在验证过程中有问题并且Laravel应该以422格式的JSON格式响应时,相反,我收到了文本/ html的响应,代码为200.然后一切都出错了.
这在我的本地计算机上不会发生,只有在生产环境中测试该应用程序时才会发生.
我还测试了使用403代码发送的未经授权的响应,它的工作原理完美无缺.
我测试了Laravel的两个自动验证错误(如文档所述:在AJAX请求期间使用validate方法时,Laravel不会生成重定向响应.相反,Laravel会生成包含所有验证错误的JSON响应.此JSON响应会以422 HTTP状态代码发送.)并使用以下方法:
return response()->json(compact('errors'),422);
我应该提到,我使用以下方法发送AJAX请求:
function save(data, url) {
return $http({
method: 'POST',
url: url,
headers: {'Content-Type': 'application/json'},
data: angular.toJson(data)
});
}
function update(data, url) {
return $http({
method: 'PUT',
url: url + data.id,
headers: {'Content-Type': 'application/json'},
data: angular.toJson(data)
});
}
不用说我变得完全困惑!
更新:Laravel验证过程似乎存在问题.验证运行时,请求将变为错误.请参见以下代码:
public function altUpdate(Request $request){
$this->authorize('editCustomer', $this->store);
if (!$request->has('customer')){
return response()->json(["message"=>"Problem in received data"],422);
}
$id = $request->customer['id'];
$rules = [
'name' => 'required',
'mobile' => "required|digits:11|unique:customers,mobile,$id,id,store_id,$this->store_id",
'phone' => 'digits_between:8,11',
'email' => "email|max:255|unique:customers,email,$id,id,store_id,$this->store_id",
];
//return response()->json(["problem in data"],422); //this one works properly if uncommented
$validator = Validator::make($request->customer,$rules);
if ($validator->fails()){
$errors = $validator->errors()->all();
Log::info($errors);
return response()->json(["problem in data"],422);//this one is received in client side as a text/html response with code 200
}
$customer = Customer::find($id);
$customer->update(wrapInputs($request->all()));
if ($request->tags) {
$this->syncTags($request->tags, $customer);
}
$message = "Customer updated successfully!";
return response()->json(compact('message'));
}
我仍然不知道验证过程有什么问题.此代码可以在我的本地计算机上正常工作,但是在生产服务器上会出现问题.
解决方法:
我终于明白了.
我添加了一个语言文件,并且该文件已以UTF-8-BOM编码,当我将该文件转换为UTF-8而不添加BOM时,一切都变得正确了.
该文件为resources / lang / [语言] /validation.php,由于编码问题,在处理此文件时发送了标头.
这个问题也帮助我找到了问题:
Laravel redirect::route is showing a message between page loads
内容总结
以上是互联网集市为您收集整理的php-Laravel与Angularjs验证json请求不良响应全部内容,希望文章能够帮你解决php-Laravel与Angularjs验证json请求不良响应所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。