首页 > 开发 > PHP > 正文

laravel 中如何使用ajax和vue总结

2024-05-04 22:46:05
字体:
来源:转载
供稿:网友

最近写一个项目是基于laravel框架的,这个框架传言是为艺术而创作的优雅框架,简洁分明的风格,很吸引我,所以最近研究比较多。本次就是基于该框架然后将Vue插件加入实现一定的功能,vue插件本身强大,具体不说了,有兴趣的同学可以去官网https://cn.vuejs.org/。laravel 本身php页面是用blade引擎,渲染数据格式:

{{msg}}

但是熟悉Vue渲染的同学知道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>

以下是本人自己写的代码:

<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}}    学期:@{{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> 

有时候我们可能向带有链接的地方插入Vue数据值作为参数,但是熟悉Vue的同学知道Vue是mustache 语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind 指令:

另外一种思路是使用v-on:click。

<a v-on:click="show(course)"> Vue实例代码: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实现数据的绑定。

最重要的是我吃了很长的时间的惯性思维的亏,认为使用ajax发送请求都是同样的模板。

但是在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!')   }  }); };            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表