前端之 AJAX

AJAX参数详细列表

参数名类型描述
urlString(默认: 当前页地址) 发送请求的地址。
typeString(默认: "GET") 请求方式 ("POST" 、 "GET")。注意:其它 HTTP 请求方法,如 PUT 和 DELETE ,但仅部分浏览器支持。
timeoutNumber设置请求超时时间(毫秒)。此设置将覆盖全局设置。
asyncBoolean(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
beforeSendFunction

发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。

function (XMLHttpRequest) {

    this; // the options for this ajax request

}

cacheBoolean(默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。
completeFunction

请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。

function (XMLHttpRequest, textStatus) {

    this; // the options for this ajax request

}

contentTypeString(默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
dataObject,
String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
dataTypeString

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

    "xml": 返回 XML 文档,可用 jQuery 处理。

    "html": 返回纯文本 HTML 信息;包含 script 元素。

    "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。

    "json": 返回 JSON 数据 。

    "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

errorFunction

(默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。

function (XMLHttpRequest, textStatus, errorThrown) { // 通常情况下textStatus和errorThown只有其中一个有值

    this; // the options for this ajax request

}

globalBoolean(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件
ifModifiedBoolean(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
processDataBoolean(默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
successFunction

请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态

function (data, textStatus) { // data could be xmlDoc, jsonObj, html, text, etc...

    this; // the options for this ajax request

}

error 的一些事项

一、error:function (XMLHttpRequest, textStatus, errorThrown

(默认: 自动判断 (xml 或 html)) 请求失败时调用时间。参数有以下三个:XMLHttpRequest 对象、错误信息、(可选)捕获的错误对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。

二、error事件返回的第一个参数XMLHttpRequest有一些有用的信息:

XMLHttpRequest.readyState 状态码 :

  • 0 - (未初始化)还没有调用send()方法 
  • 1 - (载入)已调用send()方法,正在发送请求 
  • 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 
  • 3 - (交互)正在解析响应内容 
  • 4 - (完成)响应内容解析完成,可以在客户端调用了

XMLHttpRequest.status 返回值状态码


AJAX准备知识:JSON

什么是 JSON ?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言
  • JSON 具有自我描述性,更易理解

JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

 

合格的json对象:

["one", "two", "three"]
{ "one": 1, "two": 2, "three": 3 }
{"names": ["张三", "李四"] }
[ { "name": "张三"}, {"name": "李四"} ]

不合格的json对象:

{ name: "张三", 'age': 32 }  // 属性名必须使用双引号
[32, 64, 128, 0xFFF]         // 不能使用十六进制值
{ "name": "张三", "age": undefined }           // 不能使用undefined
{ "name": "张三","birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),"getName":  function() {return this.name;}  // 不能使用函数和日期对象
}

stringify与parse方法

JavaScript中关于JSON对象和字符串转换的两个方法:

  • JSON.parse(): 用于将一个 JSON 字符串转换为 JavaScript 对象
JSON.parse('{"name":"Q1mi"}');
JSON.parse('{name:"Q1mi"}') ;    // 错误
JSON.parse('[18,undefined]') ;   // 错误
  • JSON.stringify(): 用于将 JavaScript 值转换为 JSON 字符串。
JSON.stringify({"name":"Q1mi"})

和XML的比较

JSON 格式于2001年由 Douglas Crockford 提出,目的就是取代繁琐笨重的 XML 格式。

JSON 格式有两个显著的优点:书写简单,一目了然;符合 JavaScript 原生语法,可以由解释引擎直接处理,不用另外添加解析代码。所以,JSON迅速被接受,已经成为各大网站交换数据的标准格式,并被写入ECMAScript 5,成为标准的一部分。

XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。

用XML表示中国部分省市数据如下:

<?xml version="1.0" encoding="utf-8"?>
<country><name>中国</name><province><name>黑龙江</name><cities><city>哈尔滨</city><city>大庆</city></cities></province><province><name>广东</name><cities><city>广州</city><city>深圳</city><city>珠海</city></cities></province>
</country>

用JSON表示如下:

{"name": "中国","province": [{"name": "黑龙江","cities": {"city": ["哈尔滨", "大庆"]}}, {"name": "广东","cities": {"city": ["广州", "深圳", "珠海"]}}]
}

由上面的两端代码可以看出,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。

AJAX简介

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

AJAX常见应用情景

搜索引擎根据用户输入的关键字,自动提示检索关键字。还有一个很重要的应用场景就是注册时候的用户名的查重。当文件框发生了输入变化时,使用AJAX技术向服务器发送一个请求,然后服务器会把查询到的结果响应给浏览器,最后再把后端返回的结果展示出来。

  • 整个过程中页面没有刷新,只是刷新页面中的局部位置而已!
  • 当请求发出后,浏览器还可以进行其他操作,无需等待服务器的响应!

AJAX的优缺点

优点:

  • AJAX使用JavaScript技术向服务器发送异步请求;
  • AJAX请求无须刷新整个页面;
  • 因为服务器响应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高;

jQuery实现的AJAX

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="{% static 'JS/jquery-3.1.1.js' %}"></script>
</head>
<body>
<button class="send_Ajax">send_Ajax</button>
<script>//$.ajax的两种使用方式://$.ajax(settings);//$.ajax(url,[settings]);$(".send_Ajax").click(function(){$.ajax({url:"/handle_Ajax/",type:"POST",data:{username:"Yuan",password:123},success:function(data){alert(data)},//=================== error============error: function (jqXHR, textStatus, err) {// jqXHR: jQuery增强的xhr// textStatus: 请求完成状态// err: 底层通过throw抛出的异常对象,值与错误类型有关console.log(arguments);},//=================== complete============complete: function (jqXHR, textStatus) {// jqXHR: jQuery增强的xhr// textStatus: 请求完成状态 success | errorconsole.log('statusCode: %d, statusText: %s', jqXHR.status, jqXHR.statusText);console.log('textStatus: %s', textStatus);},//=================== statusCode============statusCode: {'403': function (jqXHR, textStatus, err) {console.log(arguments);  //注意:后端模拟errror方式:HttpResponse.status_code=500},'400': function () {}}})})
</script>
</body>
</html>

views.py:

def ajax_test(request):user_name = request.POST.get("username")password = request.POST.get("password")print(user_name, password)return HttpResponse("OK")

$.ajax参数

请求参数

###################### data ################
当前ajax请求要携带的数据,是一个json的object对象,ajax方法就会默认地把它编码成某种格式
(urlencoded:?a=1&b=2)发送给服务端;此外,ajax默认以get方式发送请求。
$.ajax("/test",{     //此时的data是一个json形式的对象data:{a:1,b:2})  //?a=1&b=2
###################### processData ################
声明当前的data数据是否进行转码或预处理,默认为true,即预处理;
if为false,那么对data:{a:1,b:2}会调用json对象的toString()方法,即{a:1,b:2}.toString()
,最后得到一个[object,Object]形式的结果。###################### contentType ################
默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。
用来指明当前请求的数据编码格式;urlencoded:?a=1&b=2;如果想以其他方式提交数据,
比如contentType:"application/json",即向服务器发送一个json字符串:
$.ajax("/ajax_get",{data:JSON.stringify({a:22,b:33}),contentType:"application/json",type:"POST",
});                     //{a: 22, b: 33}
注意:contentType:"application/json"一旦设定,data必须是json字符串,不能是json对象
views.py:   json.loads(request.body.decode("utf8"))###################### traditional ################
一般是我们的data数据有数组时会用到 :data:{a:22,b:33,c:["x","y"]},
traditional为false会对数据进行深层次迭代;

响应参数

dataType:  预期服务器返回的数据类型,服务器端返回的数据会根据这个值解析后,传递给回调函数。默认不需要显性指定这个属性,ajax会根据服务器返回的content Type来进行转换;比如我们的服务器响应的content Type为json格式,这时ajax方法就会对响应的内容进行一个json格式的转换,if转换成功,我们在success的回调函数里就会得到一个json格式的对象;转换失败就会触发error这个回调函数。如果我们明确地指定目标类型,就可以使用data Type。dataType的可用值:html|xml|json|text|script见下dataType实例

Django 实现AJAX

from django.shortcuts import render,HttpResponse
from django.views.decorators.csrf import csrf_exempt
# Create your views here.
import jsondef login(request):return render(request,'Ajax.html')def ajax_get(request):l=['alex','little alex']dic={"name":"alex","pwd":123}#return HttpResponse(l)      #元素直接转成字符串alexlittle alex#return HttpResponse(dic)    #字典的键直接转成字符串namepwdreturn HttpResponse(json.dumps(l))return HttpResponse(json.dumps(dic))# 传到前端的是json字符串,要想使用,需要JSON.parse(data)
//---------------------------------------------------function testData() {$.ajax('ajax_get', {success: function (data) {console.log(data);console.log(typeof(data));    //dataType:"json",//console.log(data.name);//JSON.parse(data);//console.log(data.name);},})}注解:Response Headers的content Type为text/html,所以返回的是String;但如果我们想要一个json对象设定dataType:"json"即可,相当于告诉ajax方法把服务器返回的数据转成json对象发送到前端.结果为object当然,return HttpResponse(json.dumps(a),content_type="application/json")这样就不需要设定dataType:"json"了。content_type="application/json"和content_type="json"是一样的!

AJAX请求如何设置csrf_token

方式1

通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。

$.ajax({data: {"csrfmiddlewaretoken": $("[name = 'csrfmiddlewaretoken']").val()  //使用jQuery取出csrfmiddlewaretoken的值,拼接到data中},
})

方式2

通过获取返回的cookie中的字符串 放置在请求头中发送。注意:需要引入一个jquery.cookie.js插件。

$.ajax({headers: {"X-CSRFToken": $.cookie('csrftoken')},  //从Cookie取csrftoken,并设置到请求头中
})

或者用自己写一个getCookie方法:

function getCookie(name) {var cookieValue = null;if (document.cookie && document.cookie !== '') {var cookies = document.cookie.split(';');for (var i = 0; i < cookies.length; i++) {var cookie = jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length + 1) === (name + '=')) {cookieValue = decodeURIComponent(cookie.substring(name.length + 1));break;}}}return cookieValue;
}
var csrftoken = getCookie('csrftoken');

每一次都这么写太麻烦了,可以使用$.ajaxSetup()方法为ajax请求统一设置。

function csrfSafeMethod(method) {// these HTTP methods do not require CSRF protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}$.ajaxSetup({beforeSend: function (xhr, settings) {if (!csrfSafeMethod(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken);}}
});

注意:

如果使用从cookie中取csrftoken的方式,需要确保cookie存在csrftoken值。

如果你的视图渲染的HTML文件中没有包含 {% csrf_token %},Django可能不会设置CSRFtoken的cookie。这个时候需要使用ensure_csrf_cookie()装饰器强制设置Cookie。

django.views.decorators.csrf import ensure_csrf_cookie@ensure_csrf_cookie
def login(request):pass

更多细节详见:Djagno官方文档中关于CSRF的内容上传文件

form表单上传文件

html

<h3>form表单上传文件</h3>
<form action="/upload_file/" method="post" enctype="multipart/form-data"><p><input type="file" name="upload_file_form"></p><input type="submit">
</form>

view

def upload_file(request):print("FILES:",request.FILES)print("POST:",request.POST)return HttpResponse("上传成功!")

Ajax(FormData)

FormData是什么呢?XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.

所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。

html

<h3>Ajax上传文件</h3><p><input type="text" name="username" id="username" placeholder="username"></p>
<p><input type="file" name="upload_file_ajax" id="upload_file_ajax"></p>
<button id="upload_button">提交</button>
{#注意button标签不要用在form表单中使用#}<script>$("#upload_button").click(function(){var username=$("#username").val();var upload_file=$("#upload_file_ajax")[0].files[0];var formData=new FormData();formData.append("username",username);formData.append("upload_file_ajax",upload_file);$.ajax({url:"/upload_file/",type:"POST",data:formData,contentType:false,processData:false,success:function(){alert("上传成功!")}});})
</script>

views同上

伪造Ajax上传文件

iframe标签

<iframe> 标签规定一个内联框架。一个内联框架被用来在当前 HTML 文档中嵌入另一个文档。

示例:<iframe src="http://www.baidu.com" width="1000px" height="600px"></iframe>

iframe+form

<h3>伪造Ajax上传文件</h3>
<form action="/upload_file/" method="post" id="form2" target="ifr" enctype="multipart/form-data"><p><iframe name="ifr" id="ifr"></iframe></p><p><input type="file" name="upload_file"></p><p><input type="text" name="user"></p><input type="button" value="提交" id="submitBtn">
</form>
<script>$("#submitBtn").click(function(){$("#ifr").load(iframeLoaded);$("#form2").submit();});function iframeLoaded(){alert(123)}
</script>

序列化

serialize()函数用于序列化一组表单元素,将表单内容编码为用于提交的字符串

serialize()函数常用于将表单内容序列化,以便用于AJAX提交。

该函数主要根据用于提交有效表单控件的name和value,将它们拼接为一个可直接用于表单提交的文本字符串,该字符串已经过标准的URL编码处理(字符集编码为UTF-8)。

该函数不会序列化不需要提交的表单控件,这和常规的表单提交行为是一致的。例如:不在<form>标签内的表单控件不会被提交、没有name属性的表单控件不会被提交、带有disabled属性的表单控件不会被提交、没有被选中的表单控件不会被提交。

与常规表单提交不一样的是:常规表单一般会提交带有name的按钮控件,而serialize()函数不会序列化带有name的按钮控件

语法

jQuery 1.0 新增该函数。

语法:jQueryObject.serialize( )

返回值

serialize()函数的返回值为String类型,返回将表单元素编码后的可用于表单提交的文本字符串。

<form name="myForm" action="http://www.365mini.com" method="post"><input name="uid" type="hidden" value="1" /><input name="username" type="text" value="张三" /><input name="password" type="text" value="123456" /><select name="grade" id="grade"><option value="1">一年级</option><option value="2">二年级</option><option value="3" selected="selected">三年级</option><option value="4">四年级</option><option value="5">五年级</option><option value="6">六年级</option></select><input name="sex" type="radio" checked="checked" value="1" />男<input name="sex" type="radio" value="0" />女<input name="hobby" type="checkbox" checked="checked" value="1" />游泳<input name="hobby" type="checkbox" checked="checked" value="2" />跑步<input name="hobby" type="checkbox" value="3" />羽毛球<input name="btn" id="btn" type="button" value="点击" />

对<form>元素进行序列化可以直接序列化其内部的所有表单元素。

// 序列化<form>内的所有表单元素
// 序列化后的结果:uid=1&username=%E5%BC%A0%E4%B8%89&password=123456&grade=3&sex=1&hobby=1&hobby=2
alert( $("form").serialize() );

我们也可以直接对部分表单元素进行序列化。

// 序列化所有的text、select、checkbox表单元素
// 序列化后的结果:username=%E5%BC%A0%E4%B8%89&password=123456&grade=3&hobby=1&hobby=2
alert( $(":text, select, :checkbox").serialize() );

serialize()函数通常用于将表单内容序列化,以便通过AJAX方式提交。

$("#btn").click( function(){// 将当前表单内容以POST请求的AJAX方式提交到"http://www.365mini.com"$.post( "http://www.365mini.com", $("form").serialize(), function( data, textStatus, jqXHR ){alert( "AJAX提交成功!" );       } ); 
} );

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5--1.18 div元素与布局

1.18 div元素与布局 1.元素的分类2.div元素与布局 1、元素的分类 块元素:主要特征是会产生换行效果&#xff0c;自动与其他元素分离成两行&#xff1b;通常可以作为容器在内部添加其他元素。已经学过的块元素有&#xff1a; h1~h6;hr;ul;ol;p;table......... 内联元素:不会产生…

五个优秀的视频格式转换工具

电脑、手机、DVD播放机、PSP……这么多的东西都可以播放视频&#xff0c;但是视频格式又千差万别的&#xff0c;我们该怎么办&#xff1f;这里&#xff0c;我们介绍五个功能强大且易于使用的媒体转换器&#xff0c;用于转换不同类型的视频文件。 一、Super (Windows) Super是一…

艾宾浩斯记忆表格excel_Excel全年学习复习计划表(艾宾浩斯遗忘曲线)

最近准备考在职博士&#xff0c;刷刷学历&#xff0c;不得不又拿起必考的英语来&#xff0c;发现由于这几年敲代码&#xff0c;日常生活词汇忘了很多&#xff0c;只好买本考博词汇背诵&#xff0c;不过三十而立的人背起来确实费劲了&#xff0c;所以开始寻找好的背诵方法。又想…

七个帮助你处理Web页面层布局的jQuery插件

1.UI.Layout jQuery UI布局插件官方网站&#xff1a;http://layout.jquery-dev.com/index.cfm使用大小可折叠的嵌套面板和大量选项创建高级UI布局。布局可以创建任何你想要的UI外观; 从简单的标题或侧边栏到具有工具栏&#xff0c;菜单&#xff0c;帮助面板&#xff0c;状态栏…

前端之 CSS

CSS介绍 CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;它就会按照这个样式表来对文档进行格式化&#xff08;渲染&#xff09;。 CSS语法 CSS实例 每个CSS样式由两个组成部分&#xff1a;选择器…

在Window下编译OpenH323

前言&#xff1a; 本文只提供VC6.0的编译说明&#xff0c;如果想知道VC.Net下的编译过程请参看原文。 原文 &#xff1a; http://www.voxgratia.org/docs/pwlib_windows.html#msvc_headers 作者 &#xff1a;Craig Southeren 翻译 &#xff1a; Richard 原文…

matlab立体坐标定位_无惧密集建筑,小天才立体定位技术带来最强定位体验

如今&#xff0c;在可穿戴设备市场中&#xff0c;智能手表占据相当大一部分。而作为核心功能之一的定位&#xff0c;在智能手表中发挥着不可替代的作用&#xff0c;尤其是对于儿童电话手表而言。并且&#xff0c;在技术飞速进步&#xff0c;产品迭代加快的当前&#xff0c;儿童…

svga文件如何查看_电脑隐藏文件?如何查看隐藏文件 方法简单易学

大家好&#xff0c;我是小白一键重装软件的客服。如何查看隐藏文件呢&#xff1f;有时候不小心把文件夹勾选隐藏后文件就消失了&#xff0c;到底是怎么回事呢&#xff1f;其实这个是电脑上面一些设置开启了文件隐藏的功能哦&#xff0c;那么下面小白系统带你了解下如何查看隐藏…

化工图纸中LISP_必备干货丨石油化工安装工程质量与成本控制研究

对于整个石油化工工程来说&#xff0c;石油化工的安装工程在其中是最重要并且最核心的一个环节&#xff0c;其对石油化工工程的质量有着决定性的作用。从客观的角度来说&#xff0c;如果石油化工安装工程在实际的施工过程中出现任何的问题&#xff0c;就会威胁到周边人群的生命…

[原创]windows server 2012 AD架构 试验 系列 – 15解决AD复制冲突

[原创]windows server 2012 AD架构 试验 系列 – 15解决AD复制冲突 这节我详细说下 ADDS使用stamp来作为解决冲突的依据 Stamp由三块组成 Version, time stamp , source DC GUID (发生对象修改行为的源DC的GUID) 一般来说冲突分为几下情况: 1-属性冲突 你可以用repadmin来查看版…

vue新手入门——vue-cli搭建

首先说明&#xff0c;以下内容vue官网都有文档&#xff0c;如果觉得麻烦啰嗦&#xff0c;请移步至 安装-vue.js 。 准备工作&#xff1a; 1.下载并安装node环境&#xff0c;一般情况下安装好node之后&#xff0c;npm也会安装好。具体安装的话&#xff0c;百度大概能帮得上忙。 …

如何看懂源代码–(分析源代码方法)

我们在写程式时&#xff0c;有不少时间都是在看别人的代码。例如看小组的代码&#xff0c;看小组整合的守则&#xff0c;若一开始没规划怎么看&#xff0c; 就会“噜看噜苦&#xff08;台语&#xff09; ” 不管是参考也好&#xff0c;从开源抓下来研究也好&#xff0c;为了了解…

LNMP环境添加第三方模块

一.在LNMP环境下添加memcache模块 1.安装依赖库(libevent) [rootnode1 ~]# tar xvf libevent-2.0.21-stable.tar.gz [rootnode1 ~]# cd libevent-2.0.21-stable [rootnode1 libevent-2.0.21-stable]# ./configure --prefix/usr/local/libevent [rootnode1 libevent-2.0.21-sta…

学生成绩管理系统-程序维护

托管平台地址&#xff1a;https://gitee.com/lucess/StudentMarkManage.git 小组名称:干翻沈师 程序运行方法: 1、后台服务&#xff1a;进入项目文件夹执行 python TeamProject.py runsercer 0.0.0.0:5050 2、前台服务&#xff1a;进入./WEB-INFO/TeamProjectWeb 文件夹执行 ya…

改需求

转载于:https://www.cnblogs.com/gw2010/p/7856484.html

架构师一般做到多少岁_软件测试可以做到多大岁数?

做这个行业也几年了&#xff0c;经常听到有人问&#xff0c;软件测试这个行业能干到多少岁&#xff0c;当然里边包含想要进入这个行业的和已经在这个行业里边发展的&#xff01;基本上软件测试可以分为三条职业发展路线&#xff1a;技术路线、管理路线、产品路线&#xff01;目…

day13 迭代器和生成器

一、上节回顾和作业讲解&#xff1a; 1、如果这个网页没有被爬取过就真的去访问这个网页&#xff0c;否则就返回之前访问的时候缓存文件中的内容 &#xff08;重要的例子&#xff09; from urllib.request import urlopen def wrapper(func):def inner(*args, **kwargs):with o…

Centos7.0 搭建Zabbix环境

实验环境&#xff1a;Centos7.0IP:192.168.47.140关闭iptables及setenforce导入源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm安装zabbix包安装完成安装mysql源wget http://repo.mysql.com/mysql-community-release-el7-5…

蒙特卡洛分析 pmp_PMP基础名词介绍 | 59. 实施定量风险分析

点击上方蓝字关注我们你好&#xff0c;这是“兔子研习社”为管理新手推出的“PMP基础名词介绍”系列内容。如果你正打算转到管理岗位&#xff0c;或者想要学习国际通行的项目管理知识&#xff0c;那恭喜你&#xff0c;这里满满的干货会让你不虚此行。实施定量风险分析是就已识别…

0阶指数哥伦布编码

指数哥伦布编码 规定语法元素的编解码模式的描述符如下&#xff1a; 比特串&#xff1a; b(8):任意形式的8比特字节&#xff08;就是为了说明语法元素是为8个比特&#xff0c;没有语法上的含义&#xff09; f(n):n位固定模式比特串&#xff08;其值固定&#xff0c;如forbidde…