Laravel中的AJAX请求和ASCII响应问题

时间:2014-05-04 16:57:08

标签: php jquery ajax json laravel

我有一个使用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中,很多事情都会发生,直到解释器到达路由器,因此设置标头可能需要一些配置或技巧或其他。

1 个答案:

答案 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);
});