我有一个使用AJAX请求的Laravel应用程序。
在其中一个请求中,我必须用波斯语字母(非拉丁语)字符的JSON响应AJAX请求。
传统PHP使用此内容类型解决了我的问题:
“application / json; charse = utf-8”
它有效。
但在Laravel中,它发送波斯语字母的ASCII版本,如下所示:
46 \u0646\u0645\u0648\u0646\u0647 \u0645\u062a\u0646 \u0646\u0645\u0648\u0646\u0647 \u0645\u062a\u0646 \u0646\u0645\u0648\u0646\u0647 \u0645\u062a\u0646 \u0646\u0645\u0648\u0646\u0647 \u0645\u062a\u0646 \u0646\u0645\
我无法弄清楚Laravel中的解决方案。
我在Laravel的观点中这样发送:
$.ajax({
url : "<?php echo url("/ajax"); ?>",
data : { id : $(this).find("input[type='hidden']").val()},
cache : 'no-cache',
type : 'POST',
success : function(response){
console.log(response);
},
});
路由器:
Route::post("ajax", function(){
header("ContentType=application/json; charset=utf-8");
$res = Image::find(Req::id())->toArray();
echo json_encode($res);
});
结果是上面打印的ASCII字符。
我该怎么办?其中一个问题是,在Laravel中,很多事情都会发生,直到解释器到达路由器,因此设置标头可能需要一些配置或技巧或其他。
答案 0 :(得分:0)
您可能需要使用响应类返回json。
Route::post('ajax', function()
{
$headers = array(
'ContentType' => 'application/json',
'charset' => 'utf-8',
);
$res = Image::find(Req::id());
return Response::json($res, 200, $headers);
});