laravel 中如何使用ajax和vue總結(jié)
最近寫(xiě)一個(gè)項(xiàng)目是基于laravel框架的,這個(gè)框架傳言是為藝術(shù)而創(chuàng)作的優(yōu)雅框架,簡(jiǎn)潔分明的風(fēng)格,很吸引我,所以最近研究比較多。本次就是基于該框架然后將Vue插件加入實(shí)現(xiàn)一定的功能,vue插件本身強(qiáng)大,具體不說(shuō)了,有興趣的同學(xué)可以去官網(wǎng)https://cn.vuejs.org/。laravel 本身php頁(yè)面是用blade引擎,渲染數(shù)據(jù)格式:
{{msg}}
但是熟悉Vue渲染的同學(xué)知道Vue的格式是:
<div id="app"> {{ message }} </div>
這樣就引起了沖突,因此,可以是
@{{msg}}
使用@跳出blade引擎模式。
以下代碼摘自是laravel-china@leo作者
<tr v-for="item in services"> <td>@{{ item.id }}</td> <td>@{{ item.name }}</td> <td>@{{{ displayHosts(item.hosts) }}}</td> <td>@{{{ bool2icon(item.enabled) }}}</td> <td>@{{{ bool2icon(item.allow_proxy) }}}</td> <td>@{{ item.created_at }}</td> <td> <a href="javascript:void(0)" rel="external nofollow" @click="edit(item)">{{ trans('admin.edit') }}</a> </td> </tr>
以下是本人自己寫(xiě)的代碼:
<li class="wrap" v-for="(course,index) in courses.data"> <div class="img"> <a v-on:click="show(course)"> <img v-bind:src="course.thumblink" width="236" height="124"> </a> </div> <div class="coursetitle"> @{{course.name}} </div> <div class="lecturer"> 講師:@{{course.teachername}} 學(xué)期:@{{course.semester}} </div> <div class="price"> @{{course.price}}元 </div> <div class="pull-left"> <button type="button" class="btn btn-success btn-xs" v-on:click="show(course)">詳情</button> </div>
有時(shí)候我們可能向帶有鏈接的地方插入Vue數(shù)據(jù)值作為參數(shù),但是熟悉Vue的同學(xué)知道Vue是mustache 語(yǔ)法不能作用在 HTML 特性上,遇到這種情況應(yīng)該使用 v-bind 指令:
另外一種思路是使用v-on:click。
<a v-on:click="show(course)"> Vue實(shí)例代碼: methods:{ show:function(course) { // debugger; window.location.href="/prices/detail/" rel="external nofollow" +course.course_id; // console.log(result); }, }
又例如下面的代碼:
<img v-bind:src="course.thumblink" width="236" height="124">
就是使用v-bind實(shí)現(xiàn)數(shù)據(jù)的綁定。
最重要的是我吃了很長(zhǎng)的時(shí)間的慣性思維的虧,認(rèn)為使用ajax發(fā)送請(qǐng)求都是同樣的模板。
但是在laravel中必須考慮CSRF-TOKEN。
如下的代碼:
function init_courses() { // debugger; $.ajax({ type:"post", url:'/selectCourse', dataType: 'json', data:{result:resul='全部,全部,全部'}, headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }, success:function(data) { mydata.courses=eval(data.result); console.log(mydata.courses); }, error: function(xhr, type){ alert('Ajax error!') } }); };
如果你的頁(yè)面沒(méi)有看到一個(gè)CSRF,可以在頁(yè)面頭部加入
<meta name="_token" content="{{ csrf_token() }}"/>
這樣就可以請(qǐng)求成功。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
三個(gè)類(lèi)概括PHP的五種設(shè)計(jì)模式
PHP的五種設(shè)計(jì)模式主要包括工廠(chǎng)模式,單元素模式,觀(guān)察者模式,命令鏈模式,策略模式2012-09-09解析php DOMElement 操作xml 文檔的實(shí)現(xiàn)代碼
本篇文章是對(duì)在php中DOMElement 操作xml 文檔的實(shí)現(xiàn)進(jìn)行了分析介紹。需要的朋友參考下2013-05-05CentOS 7.2 下編譯安裝PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法詳解(mini版
這篇文章主要介紹了CentOS 7.2 mini版本下編譯安裝PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09Swoole4.4協(xié)程搶占式調(diào)度器詳解
這篇文章主要介紹了Swoole4.4協(xié)程搶占式調(diào)度器詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05laravel實(shí)現(xiàn)分頁(yè)樣式替換示例代碼(增加首、尾頁(yè))
這篇文章主要給大家介紹了關(guān)于laravel實(shí)現(xiàn)分頁(yè)樣式替換的相關(guān)資料,實(shí)現(xiàn)了增加首、尾頁(yè)的功能,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-09-09php獲取數(shù)據(jù)庫(kù)中數(shù)據(jù)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇php獲取數(shù)據(jù)庫(kù)中數(shù)據(jù)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06PHP實(shí)現(xiàn)Session入庫(kù)/存入redis的方法
本篇文章主要介紹了PHP實(shí)現(xiàn)Session入庫(kù)/存入redis的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05