Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php向javascript(Laravel)发送数据时为什么使用json编码?_Php_Laravel - Fatal编程技术网

从php向javascript(Laravel)发送数据时为什么使用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

我刚刚读了这个问题,注意到很多答案都显示了json编码。我只是想知道为什么?是为了某种安全吗?例如,在拉威尔,这是拉东西进去的正确方法吗

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
字符串。PHP
json\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
字符串。PHP
json\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(() => {});
    },