从php向javascript(Laravel)发送数据时为什么使用json编码?
我刚刚读了这个问题,注意到很多答案都显示了json编码。我只是想知道为什么?是为了某种安全吗?例如,在拉威尔,这是拉东西进去的正确方法吗从php向javascript(Laravel)发送数据时为什么使用json编码?,php,laravel,Php,Laravel,我刚刚读了这个问题,注意到很多答案都显示了json编码。我只是想知道为什么?是为了某种安全吗?例如,在拉威尔,这是拉东西进去的正确方法吗 var date = '{!! json_encode($event->date) !!}', parseDate = JSON.parse(date); //use parseDate here. 很抱歉提出了一个全新的问题,但我没有代表对原始问题发表评论:/通常,当您想要保留数据结构时,JSON用于将数据从服务器发送到浏览器。在Javascrip
var date = '{!! json_encode($event->date) !!}',
parseDate = JSON.parse(date);
//use parseDate here.
很抱歉提出了一个全新的问题,但我没有代表对原始问题发表评论:/通常,当您想要保留数据结构时,JSON用于将数据从服务器发送到浏览器。在Javascript中很容易解析,结果是一个与服务器语言(如PHP)中的原始数组相匹配的数组。对于简单的单一值,实际上并不需要它。通常,当您想要保留数据结构时,JSON用于将数据从服务器发送到浏览器。在Javascript中很容易解析,结果是一个与服务器语言(如PHP)中的原始数组相匹配的数组。对于简单的单个值,实际上并不需要它。当您使用
json\u encode
时:
var date = {!! json_encode($event->date) !!};
然后返回一个JSON
字符串。PHPjson\u encode
函数将传递给它的数据转换为json
字符串,然后可以将该字符串输出到JavaScript变量。而JSON
是JavaScript文字符号的子集,因此可以将JSON
直接放入JavaScript代码中,只要表达式有效
不需要JSON.parse
或$.parseJSON
,事实上,使用它们会失败
date
将是一个JavaScript对象(如果PHP“关联”数组具有非数字键,因此json\u encode
output{…}
),或者是一个JavaScript数组(如果json\u encode
output[…]
)。使用json\u encode
时:
var date = {!! json_encode($event->date) !!};
然后返回一个JSON
字符串。PHPjson\u encode
函数将传递给它的数据转换为json
字符串,然后可以将该字符串输出到JavaScript变量。而JSON
是JavaScript文字符号的子集,因此可以将JSON
直接放入JavaScript代码中,只要表达式有效
不需要JSON.parse
或$.parseJSON
,事实上,使用它们会失败
date
将是一个JavaScript对象(如果PHP“关联”数组具有非数字键,因此json\u encode
output{…}
),或者是一个JavaScript数组(如果json\u encode
output[…]
)。响应Amit Gupa,下面是一段没有解析(基于)就无法工作的代码。好的,第一部分是视图的主要部分。正在从数据库中提取$event,日期和时间分别存储。我把它作为一个小部件使用,虽然它的作用相当于一个普通的视图
<div id="clockdiv">
<div class = 'timeFormat form-group-shadow'>
<span class="days">0</span>
<div class="small-text">Days</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="hours">00</span>
<div class="small-text">Hours</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="minutes">00</span>
<div class="small-text">Minutes</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="seconds">00</span>
<div class="small-text">Seconds</div>
</div>
</div>
</div>
{{ HTML::script('js/countdown.js') }}
<script>
var date = '@if(isset($event)){!! json_encode($event->date) !!}@endif',
time = '@if(isset($event)){!! json_encode($event->time) !!}@endif',
dateTime = JSON.parse(date) + " " + JSON.parse(time);
if(new Date(dateTime) >= Date.now()){
initializeClock('clockdiv', dateTime);
};
</script>
0
天
00
小时
00
会议记录
00
秒
{{HTML::script('js/countdown.js')}
var date='@if(isset($event)){!!json_encode($event->date)!!}@endif',,
时间='@if(isset($event)){!!json_encode($event->time)!!}@endif',,
dateTime=JSON.parse(日期)+“”+JSON.parse(时间);
如果(新日期(日期时间)>=Date.now()){
初始化锁('clockdiv',dateTime);
};
这里可以看到脚本“js/countdown.js”
function getTimeRemaining(endtime){
var t = Date.parse(endtime) - Date.parse(new Date());
var seconds = Math.floor( (t/1000) % 60 );
var minutes = Math.floor( (t/1000/60) % 60 );
var hours = Math.floor( (t/(1000*60*60)) % 24 );
var days = Math.floor( t/(1000*60*60*24) );
return {
'total': t,
'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
};
}
function initializeClock(id, endtime){
var clock = document.getElementById(id);
var daysSpan = clock.querySelector('.days');
var hoursSpan = clock.querySelector('.hours');
var minutesSpan = clock.querySelector('.minutes');
var secondsSpan = clock.querySelector('.seconds');
function updateClock(){
var t = getTimeRemaining(endtime);
daysSpan.innerHTML = t.days;
hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);
if(t.total<=0){
clearInterval(timeinterval);
}
}
updateClock();
var timeinterval = setInterval(updateClock,1000);
}
函数getTimeRemaining(endtime){
var t=Date.parse(endtime)-Date.parse(new Date());
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
可变小时数=数学楼层((t/(1000*60*60))%24);
风险天数=数学下限(t/(1000*60*60*24));
返回{
“总计”:t,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(id,endtime){
var clock=document.getElementById(id);
var daysSpan=clock.querySelector('.days');
var hoursSpan=clock.querySelector('.hours');
var minutesSpan=clock.querySelector('.minutes');
var secondsSpan=clock.querySelector('.seconds');
函数updatelock(){
var t=GetTime剩余时间(endtime);
daysSpan.innerHTML=t.days;
hoursSpan.innerHTML=('0'+t.hours).slice(-2);
minuteSpan.innerHTML=('0'+t.minutes).slice(-2);
secondsSpan.innerHTML=('0'+t.seconds).slice(-2);
如果(t.total响应Amit Gupa,下面是没有解析(基于)就无法工作的代码。好的,第一部分是视图的主要部分。从数据库中提取$event,日期和时间分开存储。我将其用作小部件使用,尽管它与普通视图的作用相当
<div id="clockdiv">
<div class = 'timeFormat form-group-shadow'>
<span class="days">0</span>
<div class="small-text">Days</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="hours">00</span>
<div class="small-text">Hours</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="minutes">00</span>
<div class="small-text">Minutes</div>
</div>
<div class = 'timeFormat form-group-shadow'>
<span class="seconds">00</span>
<div class="small-text">Seconds</div>
</div>
</div>
</div>
{{ HTML::script('js/countdown.js') }}
<script>
var date = '@if(isset($event)){!! json_encode($event->date) !!}@endif',
time = '@if(isset($event)){!! json_encode($event->time) !!}@endif',
dateTime = JSON.parse(date) + " " + JSON.parse(time);
if(new Date(dateTime) >= Date.now()){
initializeClock('clockdiv', dateTime);
};
</script>
0
天
00
小时
00
会议记录
00
秒
{{HTML::script('js/countdown.js')}
var date='@if(isset($event)){!!json_encode($event->date)!!}@endif',,
时间='@if(isset($event)){!!json_encode($event->time)!!}@endif',,
dateTime=JSON.parse(日期)+“”+JSON.parse(时间);
如果(新日期(日期时间)>=Date.now()){
初始化锁('clockdiv',dateTime);
};
这里可以看到脚本“js/countdown.js”
function getTimeRemaining(endtime){
var t = Date.parse(endtime) - Date.parse(new Date());
var seconds = Math.floor( (t/1000) % 60 );
var minutes = Math.floor( (t/1000/60) % 60 );
var hours = Math.floor( (t/(1000*60*60)) % 24 );
var days = Math.floor( t/(1000*60*60*24) );
return {
'total': t,
'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
};
}
function initializeClock(id, endtime){
var clock = document.getElementById(id);
var daysSpan = clock.querySelector('.days');
var hoursSpan = clock.querySelector('.hours');
var minutesSpan = clock.querySelector('.minutes');
var secondsSpan = clock.querySelector('.seconds');
function updateClock(){
var t = getTimeRemaining(endtime);
daysSpan.innerHTML = t.days;
hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);
if(t.total<=0){
clearInterval(timeinterval);
}
}
updateClock();
var timeinterval = setInterval(updateClock,1000);
}
函数getTimeRemaining(endtime){
var t=Date.parse(endtime)-Date.parse(new Date());
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
可变小时数=数学楼层((t/(1000*60*60))%24);
风险天数=数学下限(t/(1000*60*60*24));
返回{
“总计”:t,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(id,endtime){
var clock=document.getElementById(id);
var daysSpan=clock.queryS
user: {!! $user !!},
onMessage(e) {
const hasUser = (e.data.user && (Object.keys(e.data.user).length > 0));
if ((e.origin !== window.origin) || !hasUser) {
return undefined;
}
console.log('user payload', e.data.user);
console.log('type', typeof e.data.user);
if (this.hasIntendedUrl) {
return this.$router.push(this.$store.getters['auth/intendedUrl'])
.then(() => this.$store.dispatch('auth/clearIntendedUrl'))
.catch(() => {});
}
return this.$router.push({ name: 'home' }).catch(() => {});
},