php点击传参跳转,页面之间传参之url传参-实现点击携参跳转到详情页

本文介绍了一个基于Vue.js和jQuery实现的电影应用案例,包括从前端通过Ajax获取服务器数据并展示电影列表,再到点击电影跳转至详情页并动态加载具体电影信息的过程。文章详细解释了前后端数据交互原理及其实现步骤。

概念图

1460000015422352

实现功能:

电影列表页,数据为动态获取服务器数据,点击某个电影后跳转到电影详情页,数据为根据点击的参数去服务器请求对应数据回来填充到页面显示给用户

效果图

电影列表页

1460000015422353

电影详情页

1460000015422354

思路及重点

电影列表的每一项是从服务器获取数据然后循环输出到页面的,点击电影列表某一电影时,要传这一项的参数到window.location.href,关键点就是给点击函数一个实参,比如这里的cctz(item.id),item.id就是实参,

在函数的定义里写形参,比如这里的canshu:

cctz (canshu) {

var url = '详情页.html' + '?id=' + escape(canshu);

window.open(url);

}

清单(过程)

1. 电影列表页,ajax获取服务器数据,循环输出到页面

bVbcS9Z?w=1341&h=754

2.写点击事件函数cctz(),当用户点击某个电影时,往cctz()里传入实参item.id,即cctz(item.id),触发js里的cctz函数,

**cctz函数使用open方法操控location.href使得页面跳转,并在href末尾追加参数字符串.**

1460000015422355

3.详情页如何取得参数?  是这样:从location.secrch拿到一段来自前一个页面传递的参数字符串,并将这段参数字符串处理成一个键值对的对象obj

1460000015422356

4.这时候obj.id就是参数,就取得了参数,再以这个参数去向服务器请求对应的数据.使用jq的ajax请求,以这个obj.id参数去向服务器请求对应的数据,把数据显示到页面

1460000015422357

5.在页面中输出数据就行了

1460000015422358

代码

//index.html

我的电影
我的电影

添加电影

{{ item.title }}

{{ item.casts[0].name }}

{{ item.casts[1].name }}

new Vue({

el: '#app',

data: {

msg: 'hsaljfl',

myData: '',

url: '实战详情页1.html?'

},

methods: {

getData() { //定义一个函数getData() , 里面放置$ajax方法

let self = this;

//从服务器拿数据回本地

$.ajax({

type: "GET", //GET还是POST,不是必须

url: "https://api.douban.com/v2/movie/top250",

dataType: "jsonp",//要求服务端返回的数据类型,不是必须

//async: true,//同步还是异步,不是必须

success: function(data) {

console.log(data);

//将拿到的数据赋值给vue实例的数据里的变量

self.myData = data.subjects;

console.log(self.myData);

}

});

},

//使用open方法操控location.href使得页面跳转,并在href末尾追加参数字符串

cctz (canshu) { //canshu是形参,在实际调用里实参是cctz(item.desc)里的item.desc

// escape将字符串转化成编码格式,接收页面到时候再转回来

var url = '详情页.html' + '?id=' + escape(canshu);

window.open(url);

}

},

created: function() { //vue的生命周期函数 , 里面执行函数getData()

this.getData();

}

})

//详情页.html

电影详情页

电影详情页

{{ vueData.title }}

主演: {{ vueData.casts[0].name }} , {{ vueData.casts[1].name }}

导演: {{ vueData.directors[0].name }}

简介: {{ vueData.summary }}

/*-- start 从location.secrch拿到一段来自前一个页面传递的参数字符串,

* 并将这段参数字符串处理成一个键值对的对象obj start --*/

var url = location.search,

obj = {};

if(url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for(var i = 0; i < strs.length; i++) {

obj[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);

}

}

console.log('传过来的参数是:', obj.id);

/*-- end --*/

/*--start 使用vue,在vue里使用jq的ajax请求数据,把数据显示到页面 --*/

new Vue({

el: '.container',

data: {

msg: '我是msg',

vueData: ''

},

methods: {

getData() { //定义一个函数getData() , 里面放置$ajax方法

let self = this;

/*-- start 拼接url --*/

var urlApi = 'https://douban.uieee.com/v2/movie/subject/';

var url = urlApi + obj.id;

/*-- end --*/

/*-- 根据参数从服务器请求数据回本地 --*/

$.ajax({

type: "GET", //GET还是POST,不是必须

url: url,

dataType: "jsonp", //要求服务端返回的数据类型,不是必须

//async: true,//同步还是异步,不是必须

success: function(data) {

console.log(data);

self.vueData = data;

console.log('self.vueData是', self.vueData);

}

});

/*-- end --*/

}

},

created: function() { //vue的生命周期函数 , 里面执行函数getData()

this.getData();

}

})

/*-- end --*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值