在我的laravel 4项目中,用户可以提交textarea数据。我知道我可以在我的视图中使用{{{}}}来转义用户数据, 但是如果我用ajax获取数据该怎么办?这是一个jquery变量我不能用括号来逃避它。例如,如果我处理来自ajax的响应,如:
$.each(response, function( key, value )
{
$('#div').append('<div>'+value.notEscapedData+'<div>')
});
例如,数据来自的控制器。
$response = Data::all()
return $response;
答案 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);