Laravel刀片逃脱jquery

时间:2014-12-24 10:59:04

标签: ajax laravel blade

在我的laravel 4项目中,用户可以提交textarea数据。我知道我可以在我的视图中使用{{{}}}来转义用户数据, 但是如果我用ajax获取数据该怎么办?这是一个jquery变量我不能用括号来逃避它。例如,如果我处理来自ajax的响应,如:

$.each(response, function( key, value ) 
{
    $('#div').append('<div>'+value.notEscapedData+'<div>')
});

例如,数据来自的控制器。

$response = Data::all()
return $response;

1 个答案:

答案 0 :(得分:2)

您可以使用javascript(您可以在互联网上找到很多解决方案。例如@Thrustmaster链接在评论中发布)或者您可以在Laravel中进行。

当您使用Blades三重花括号{{{ }}}时,它会编译为e()的调用(然后调用htmlentities

因此,您可以使用e('string-containing-html')来转义字符串。

您可以使用model attribute accessor进行转义,但我想您有时需要未转义的字符串,所以这里还有另外两个选项:

指定者()

覆盖模型中的toArray()方法

public function toArray(){
    $array = parent::toArray();
    $array['attribute_name'] = e($array['attribute_name']);
    return $array;
}

这种方式每次将模型转换为数组(用于将其转换为JSON =时,属性都将被转义。

在控制器中循环

$data = Data::all();
$data->each(function($d){
    $d->attribute_name = e($d->attribute_name);
});
return Response::json($data);