laravel 中使用ajax和vue总结

前端之家收集整理的这篇文章主要介绍了laravel 中使用ajax和vue总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  1. {{msg}}

但是熟悉Vue渲染的同学知道Vue的格式是:

  1. <div >
  2. {{ message }}
  3. </div>

这样就引起了冲突,因此,可以是

  1. @{{msg}}

使用@跳出blade引擎模式。

以下代码摘自是laravel-china@leo作者

  1. <tr v-for="item in services">
  2. <td>@{{ item.id }}</td>
  3. <td>@{{ item.name }}</td>
  4. <td>@{{{ displayHosts(item.hosts) }}}</td>
  5. <td>@{{{ bool2icon(item.enabled) }}}</td>
  6. <td>@{{{ bool2icon(item.allow_proxy) }}}</td>
  7. <td>@{{ item.created_at }}</td>
  8. <td>
  9. <a href="javascript:void(0)" @click="edit(item)">{{ trans('admin.edit') }}</a>
  10. </td>
  11. </tr>

以下是本人自己写的代码

  1. <li class="wrap" v-for="(course,index) in courses.data">
  2. <div class="img">
  3. <a v-on:click="show(course)">
  4. <img v-bind:src="course.thumblink"
  5. width="236" height="124">
  6. </a>
  7. </div>
  8. <div class="coursetitle">
  9. @{{course.name}}
  10. </div>
  11. <div class="lecturer">
  12. 讲师:@{{course.teachername}}
  13. 学期:@{{course.semester}}
  14. </div>
  15. <div class="price">
  16. @{{course.price}}元
  17. </div>
  18. <div class="pull-left">
  19. <button type="button" class="btn btn-success btn-xs" v-on:click="show(course)">详情</button>
  20. </div>

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

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

  1. <a v-on:click="show(course)">
  2. Vue实例代码
  3. methods:{
  4. show:function(course)
  5. {
  6. // debugger;
  7. window.location.href="/prices/detail/"+course.course_id;
  8. // console.log(result);
  9. },
  10. }

又例如下面的代码

  1. <img v-bind:src="course.thumblink" width="236" height="124">

就是使用v-bind实现数据的绑定。

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

但是在laravel中必须考虑CSRF-TOKEN,感兴趣的同学可以去laravel学院看看详细解释,http://laravelacademy.org。

如下的代码

  1. function init_courses()
  2. {
  3. // debugger;
  4. $.ajax({
  5. type:"post",
  6. url:'/selectCourse',
  7. dataType: 'json',
  8. data:{result:resul='全部,全部,全部'},
  9. headers: {
  10. 'X-CSRF-TOKEN': $('Meta[name="_token"]').attr('content')
  11. },
  12. success:function(data)
  13. {
  14. mydata.courses=eval(data.result);
  15. console.log(mydata.courses);
  16. },
  17. error: function(xhr, type){
  18. alert('Ajax error!')
  19. }
  20. });
  21. };

如果你的页面没有看到一个CSRF,可以在页面头部加入

  1. <Meta name="_token" content="{{ csrf_token() }}"/>

这样就可以请求成功。

感谢大家指正!!

祝生活愉快

猜你在找的Ajax相关文章