PHP会话/json/javascript

PHP会话/json/javascript,javascript,php,laravel,session,Javascript,Php,Laravel,Session,我需要弄清楚为什么我不能为JSON对象将此会话发送到JS。我肯定我错过了一些简单的东西 我有一个会话变量设置在laravel Session::put('test', "{'test1':'123','test2':'456'}"); 我想在js中的页面中设置: <script>var testvar = "{{\Session::get('test')}}"; 但是我看到js testvar是用引号编码的 我做错了什么?问题 您的以下代码 <script> v

我需要弄清楚为什么我不能为JSON对象将此会话发送到JS。我肯定我错过了一些简单的东西

我有一个会话变量设置在laravel

Session::put('test', "{'test1':'123','test2':'456'}");
我想在js中的页面中设置:

<script>var testvar = "{{\Session::get('test')}}";
但是我看到js testvar是用引号编码的

我做错了什么?

问题 您的以下代码

<script>
   var testvar = "{{\Session::get('test')}}";
   var data = JSON.parse(testvar);
</script>
但这又带来了另一个问题

出于安全原因,Laravel自动转义HTML以避免XSS攻击

这意味着上述内容现在被解释为:

<script>
    var testvar = {&quot;test1&quot;:&quot;123&quot;,&quot;test2&quot;:&quot;456&quot;}&quot;
    var data = JSON.parse(testvar);
</script>
然后将输出HTML:

<script>
    var testvar = {"test1":"123", "test2":"456"};
</script>
然后你可以做:

<script>
    var testvar = @json(Session::get('test'));
</script>
<script>
    var testvar = @json($testvar);
</script>
然后你可以做:

<script>
    var testvar = @json(Session::get('test'));
</script>
<script>
    var testvar = @json($testvar);
</script>

var testvar=@json($testvar);
问题 您的以下代码

<script>
   var testvar = "{{\Session::get('test')}}";
   var data = JSON.parse(testvar);
</script>
但这又带来了另一个问题

出于安全原因,Laravel自动转义HTML以避免XSS攻击

这意味着上述内容现在被解释为:

<script>
    var testvar = {&quot;test1&quot;:&quot;123&quot;,&quot;test2&quot;:&quot;456&quot;}&quot;
    var data = JSON.parse(testvar);
</script>
然后将输出HTML:

<script>
    var testvar = {"test1":"123", "test2":"456"};
</script>
然后你可以做:

<script>
    var testvar = @json(Session::get('test'));
</script>
<script>
    var testvar = @json($testvar);
</script>
然后你可以做:

<script>
    var testvar = @json(Session::get('test'));
</script>
<script>
    var testvar = @json($testvar);
</script>

var testvar=@json($testvar);

为什么要在刀片服务器中使用
会话
?您需要根据MVC.1将这些值作为参数传递给刀片服务器。那不是,2@Andreas如果它走路像鸭子,说话像鸭子,那么它就是一个json对象。:)~@如果有什么不对劲,那就是不对了。仅仅因为有一个网站使用了错误的术语,它并不能使它正确。@Andreas如果它是错误的-我们必须纠正错误。有时候,为了纠正错误,你必须做一个错误-正确的选择。为什么你想在刀片服务器中使用
会话
?您需要根据MVC.1将这些值作为参数传递给刀片服务器。那不是,2@Andreas如果它走路像鸭子,说话像鸭子,那么它就是一个json对象。:)~@如果有什么不对劲,那就是不对了。仅仅因为有一个网站使用了错误的术语,它并不能使它正确。@Andreas如果它是错误的-我们必须纠正错误。有时,为了纠正错误,你必须做错事。属性(如果需要还包括值)必须用双引号包装不,它们没有。我想你会对JSON感到困惑。JavaScript对象允许单引号和双引号的属性和值。我不明白。。。您是说在会话变量中设置一个数组,然后执行此操作吗?var-app=@json(会话::get('test');我提供了两种解决方案。如果无法更改会话数据,则使用原始刀片标记。但是,最好将会话数据设置为数组,而不是编码的JSON数据,并使用
var testvar=@JSON(session::get('test'))
。在第一个版本的答案中,您使用的是
“{!!Session::get('test')!!}”
,必须对其进行解析,否则它将只是一个字符串。要使其成为有效的JSON,属性必须用双引号括起来,而设置to(
Session::put('test',“{'test1':'123','test2':'456'}”);
)的情况则不同。属性(如果需要,还包括值)必须用双引号括起来。不,它们没有。我想你会对JSON感到困惑。JavaScript对象允许单引号和双引号的属性和值。我不明白。。。您是说在会话变量中设置一个数组,然后执行此操作吗?var-app=@json(会话::get('test');我提供了两种解决方案。如果无法更改会话数据,则使用原始刀片标记。但是,最好将会话数据设置为数组,而不是编码的JSON数据,并使用
var testvar=@JSON(session::get('test'))
。在第一个版本的答案中,您使用的是
“{!!Session::get('test')!!}”
,必须对其进行解析,否则它将只是一个字符串。要使其成为有效的JSON,属性必须用双引号括起来,而to(
Session::put('test',“{'test1':'123','test2':'456');