zoukankan      html  css  js  c++  java
  • laravel 中使用ajax和vue总结

    最近写一个项目是基于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)" @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/"+course.course_id;
          // console.log(result);
        },
      }

    又例如下面的代码:

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

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

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

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

    如下的代码:

     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!')
    
                }
    
            });
        };

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

    <meta name="_token" content="{{ csrf_token() }}"/>

    这样就可以请求成功。

    感谢大家指正!!

    祝生活愉快

  • 相关阅读:
    C# 访问USB(HID)设备
    IPad C盘中backup文件夹占用太多空间
    fastboot
    adb get android's ip
    Reading MMS
    Bitcoin
    内存问题导致编译不过!
    串口LOG 单编kernel
    Source Insight 格式化
    framework层的空指针会让系统重启
  • 原文地址:https://www.cnblogs.com/ncut/p/7367653.html
Copyright © 2011-2022 走看看