响应式秒变pc
<meta name="viewport" content="width=device-width,minimum-scale=.3,maximum-scale=.3,initial-scale=.3,user-scalable=no"> <meta name="viewport" content="width=device-width,minimum-scale=.3,maximum-scale=.3,initial-scale=.3,user-scalable=no"> <style>
.holder a:hover{color:#af1e25}
.holder a.jp-previous{margin-right:15px}
.holder a.jp-next{margin-left:15px}
.holder a.jp-current,a.jp-current:hover{background:#af1e25!important;border-color:#af1e25!important;color:#fff!important}
.holder a.jp-disabled,a.jp-disabled:hover{color:#bbb}
.holder a.jp-current,.holder a.jp-disabled,a.jp-current:hover,a.jp-disabled:hover{cursor:default}
.holder span{margin:0 5px}
.holder{display:flex;justify-content:center;flex-wrap:wrap;margin-right:10px}
.upage{display:flex;justify-content:center;flex-wrap:wrap;margin-top:40px}
.pgtool{display:flex;justify-content:center;flex-wrap:wrap}
.upage .pg1{line-height:30px;font-size:14px;color:#666}
.upage .pg2{display:none}
.pginp{height:30px;width:60px;border:1px solid #ddd;border-radius:3px;margin:0 5px;outline:0;text-align:center;-webkit-appearance:none}
#pgGo{background:#af1e25;height:30px;padding:0 10px;border:0;border-radius:3px;color:#fff;outline:0;cursor:pointer}
/style>
function list(data) {
var nopic = "/ggsydw/nopic.jpg";
var html = "";
data.forEach(function (item, index) {
if (/cnsq.*shtml|shtml.*cnsq/.test(item.url)) {
item.url = "";
}
html += `<li><div class="img"><img class="lazy" data-original="${item.img ? item.img : nopic}" alt=""></div><div><div class="txt"><h4>${item.title}</h4>
<div class="info"><p><strong>机构性质:</strong><span>${item.jgxz}</span></p><p><strong>联系方式:</strong><span>${item.lxfs}</span></p><p><strong>地址:</strong><span>${item.dz}</span></p></div></div><div class="info1"><a href="${item.url ? item.url : "javascript:;"}" target="${item.url ? "_blank" : "_self"}"><img src="/cnsq/xhtml/ztzl/ggsydw/wz.png">官网</a><a href="javascript:;"><img src="/cnsq/xhtml/ztzl/ggsydw/wx.png">微信<span><img src="${item.code}" alt=""></span></a></div></div></li>`;
});
if (data.length != 0) {
$("#data").html(html);
$(".holder").jPages({
containerID: "data",
perPage: 12,
first: "首页",
previous: "上一页",
next: "下一页",
last: "尾页",
callback: function (pages, items) {
$("#legend1").html("当前 " + pages.current + " / " + pages.count + " 共" + items.count + "条记录");
$("img.lazy").lazyload({ effect: "fadeIn" });
},
});
$("#pgGo").click(function () {
var page = parseInt($(".pginp").val());
$(".holder").jPages(page);
});
$(".notip").hide();
} else {
$("#data").html("");
$(".holder").html("");
$(".notip").show();
}
}
<input type="text" id="keyword"><button id="so">搜索</button>
<ul id="data"></ul>
<button class="ajaxMore" style="display: none">加载更多</button>
<script type="text/javascript">
let curpage = 1;
let limit=15;
let sum =0;
let _fields='id,tid,title,keywords,description,litpic,body,htmlurl,target,addtime';
let _serUrl ="/GetData/getDataSearch.html";
let _model='article';
let _key='232323';
let _word = '';
let _title = 'title';
$("#so").click(function(){
_word = $("#keyword").val();
let html='';
$.ajax({
url:_serUrl,
dataType:"json",
async:true,
data:{model:_model,key:_key,search:_title,word:_word,fields:_fields,limit:limit,page:curpage},
type:"POST",
success:function(r){
console.log(r);
sum = r.sum;
if(sum>=1&&sum<=limit){
$(".ajaxMore").show().html('没有更多了!');
}else if(sum>limit){
$(".ajaxMore").show();
}else{
$(".ajaxMore").show().html('无相关数据');
}
$("#data").html('');
for(const item of r.data){
html+=`<li><h4>${item.title}</h4></li>`;
}
$("#data").html(html);
},
error:function(){
}
})
})
$(".ajaxMore").click(function(){
curpage++;
let html = '';
$.ajax({
url:_serUrl,
dataType:"json",
async:true,
data:{model:_model,key:_key,search:_title,word:_word,fields:_fields,limit:limit,page:curpage},
type:"POST",
success:function(r){
if(r.data.length>0){
let allpage = r.allpage;
if(curpage<=allpage){
if(r.data.length<limit){
$(".ajaxMore").text('没有更多了!');
};
for(const item of r.data){
html+=`<li><h4>${item.title}</h4></li>`
}
$("#data").append(html);
}
}
}
})
})
</script> Axios 发送请求示例
Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。相比 jQuery 的 Ajax,Axios 更加现代和强大。以下是各种 Axios 请求的示例
1. 安装 Axios
bash
npm install axios
# 或通过 CDN
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
2. 基本 GET 请求
// 最简单的形式
axios.get('/api/user')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('请求出错:', error);
});
// 带参数的 GET 请求
axios.get('/api/user', {
params: {
ID: 12345
}
})
.then(response => {
console.log(response.data);
});
3. POST 请求
// 发送 JSON 数据
axios.post('/api/user', {
firstName: '张',
lastName: '三',
age: 30
})
.then(response => {
console.log(response.data);
});
// 发送表单数据 (application/x-www-form-urlencoded)
const params = new URLSearchParams();
params.append('name', '李四');
params.append('age', '25');
axios.post('/api/user', params);
4. 并发请求
// 同时发起多个请求
function getUserAccount() {
return axios.get('/api/user/123');
}
function getUserPermissions() {
return axios.get('/api/user/123/permissions');
}
Promise.all([getUserAccount(), getUserPermissions()])
.then(results => {
const account = results[0].data;
const permissions = results[1].data;
console.log(account, permissions);
});
5. 文件上传
// 通过 FormData 上传文件
const formData = new FormData();
const file = document.querySelector('input[type="file"]').files[0];
formData.append('file', file);
axios.post('/api/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: progressEvent => {
const percentCompleted = Math.round(
(progressEvent.loaded * 100) / progressEvent.total
);
console.log(`${percentCompleted}%`);
}
})
.then(response => {
console.log('上传成功:', response.data);
});
6. 自定义配置
// 创建自定义实例
const instance = axios.create({
baseURL: 'https://api.example.com',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
// 使用实例
instance.get('/user')
.then(response => {
console.log(response.data);
});
7. 请求和响应拦截器
// 添加请求拦截器
axios.interceptors.request.use(config => {
// 在发送请求前做些什么
config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
return config;
}, error => {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(response => {
// 对响应数据做点什么
return response.data; // 直接返回data部分
}, error => {
// 对响应错误做点什么
if (error.response.status === 401) {
// 处理未授权情况
window.location.href = '/login';
}
return Promise.reject(error);
});
8. 错误处理
axios.get('/api/user/123')
.then(response => {
console.log(response.data);
})
.catch(error => {
if (error.response) {
// 请求已发出,服务器返回状态码不在 2xx 范围内
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// 请求已发出但没有收到响应
console.log(error.request);
} else {
// 设置请求时发生错误
console.log('Error', error.message);
}
console.log(error.config);
});
9. 取消请求
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
axios.get('/api/user/123', {
cancelToken: source.token
}).catch(thrown => {
if (axios.isCancel(thrown)) {
console.log('请求已取消:', thrown.message);
} else {
// 处理其他错误
}
});
// 取消请求
source.cancel('用户取消了请求');
10. 全局配置
// 设置全局默认值
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
11. 使用 async/await
async function getUser() {
try {
const response = await axios.get('/api/user/123');
console.log(response.data);
} catch (error) {
console.error('获取用户失败:', error);
}
}
// 并发请求
async function getData() {
try {
const [user, orders] = await Promise.all([
axios.get('/api/user/123'),
axios.get('/api/orders?user=123')
]);
console.log(user.data, orders.data);
} catch (error) {
console.error('获取数据失败:', error);
}
} jQuery发送Ajax请求示例
https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js
1. 基本GET请求
$.ajax({
url: '/api/data', // 请求地址
type: 'GET', // 请求方法
dataType: 'json', // 预期返回的数据类型
beforeSend:function(){
},
success: function(data) {
// 请求成功处理
console.log('获取数据成功:', data);
},
complete:function(){
},
error: function(xhr, status, error) {
// 请求失败处理
console.error('获取数据失败:', error);
}
});
2. 带参数的GET请求
$.ajax({
url: '/api/search',
type: 'GET',
data: { // 发送到服务器的数据
keyword: 'jQuery',
page: 1
},
dataType: 'json',
success: function(data) {
console.log('搜索结果:', data);
},
error: function(xhr, status, error) {
console.error('搜索失败:', error);
}
});
3. POST请求
$.ajax({
url: '/api/users',
type: 'POST',
contentType: 'application/json', // 发送JSON数据
data: JSON.stringify({ // 转换为JSON字符串
name: ' ',
age: 25,
email: ' '
}),
dataType: 'json',
success: function(data) {
console.log('创建用户成功:', data);
},
error: function(xhr, status, error) {
console.error('创建用户失败:', error);
}
});
4. 表单数据提交
$('#myForm').submit(function(e) {
e.preventDefault(); // 阻止表单默认提交行为
$.ajax({
url: $(this).attr('action'),
type: 'POST',
data: $(this).serialize(), // 序列化表单数据
dataType: 'json',
success: function(data) {
alert('表单提交成功!');
},
error: function(xhr, status, error) {
alert('表单提交失败: ' + error);
}
});
});
5. 文件上传
$('#fileUpload').change(function() {
var formData = new FormData();
formData.append('file', this.files[0]);
$.ajax({
url: '/api/upload',
type: 'POST',
data: formData,
processData: false, // 不处理数据
contentType: false, // 不设置内容类型
dataType: 'json',
success: function(data) {
console.log('文件上传成功:', data);
},
error: function(xhr, status, error) {
console.error('文件上传失败:', error);
},
xhr: function() {
// 获取原生XHR对象
var xhr = $.ajaxSettings.xhr();
if (xhr.upload) {
// 添加上传进度事件
xhr.upload.addEventListener('progress', function(e) {
if (e.lengthComputable) {
var percent = Math.round((e.loaded / e.total) * 100);
$('#progress').text(percent + '%');
}
}, false);
}
return xhr;
}
});
});
6. 简写方法
jQuery提供了一些Ajax的简写方法:
$.get();
$.get('/api/data', {id: 123}, function(data) {
console.log('获取数据:', data);
}, 'json');
$.post();
$.post('/api/users', {name: '李四', age: 30}, function(data) {
console.log('创建用户:', data);
}, 'json');
$.getJSON();
$.getJSON('/api/data.json', function(data) {
console.log('JSON数据:', data);
});
7. 全局Ajax设置
可以设置全局Ajax默认值:
$.ajaxSetup({
timeout: 5000, // 5秒超时
headers: { // 设置请求头
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
8. 使用Promise风格
jQuery Ajax也支持Promise风格调用:
$.ajax({
url: '/api/data',
type: 'GET',
dataType: 'json'
})
.done(function(data) {
console.log('成功:', data);
})
.fail(function(xhr, status, error) {
console.error('失败:', error);
})
.always(function() {
console.log('请求完成');
});