node 后台ajax文件(同时支持http、https)
var http = require("http"),
Url = require("url"),
querystring = require('querystring'); // 默认值
function defaults(url){
return {
// 如果返回false可以取消本次请求
beforeSend: function(req){},
complete: function(req){},
data: '', // Object, String
dataType: 'html',
error: function(){},
headers: {}, // {k:v, ...}
statusCode: {},
success: function(data){},
timeout: 10,
type: 'GET', // GET, POST
url: url
};
} function ajax( settings ){
// ajax(settings)
if( typeof settings === "object" ) {
// 处理默认值继承
// todo ... } var params = Url.parse(settings.url, true);
// params 解析出来的参数如下
// {
// "protocol":"http:",
// "slashes":true,
// "host":"localhost:3000",
// "port":"3000",
// "hostname":"localhost",
// "href":"http://localhost:3000/?d=1",
// "search":"?d=1",
// "query":{"d":"1"},
// "pathname":"/",
// "path":"/?d=1"
// } var options = {
host: params.hostname,
port: params.port || 80, //80:http请求 443:https请求
path: params.path,
method: settings.type,
headers:{
'Content-Type':'application/x-www-form-urlencoded',
'Content-Length': settings.data ? settings.data.length : 0
}
}; if(settings.cookie) options.headers['Cookie'] = settings.cookie; var req = http.request(options, function(res) {
var data = '';
res.on('data', function(chunk) {
data += chunk;
}).on('end', function(){
if( settings.dataType === "json" ) {
try {
data = JSON.parse(data);
} catch(e) {
data = null;
}
}
settings.success(data);
settings.complete(req);
});
}).on('error', function(e) {
settings.error(e);
}); if( typeof settings.beforeSend === "function" ) {
if ( !settings.beforeSend(req) ) {
settings.complete(req);
req.end();
return false;
}
} if( settings.type === "POST" ) {
req.write(settings.data);
} req.setTimeout(settings.timeout);
req.end();
} exports.ajax = ajax;
node 后台ajax文件(同时支持http、https)的更多相关文章
- node学习笔记(二)(ajax方式向node后台提交数据)
通过ajax向node后台提交数据过程(附手写前后台代码),并总结post与get的区别 POST 前台代码 //CSS简单给点样式 <style> form{ width: 200px; ...
- jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传
jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传 http://www.malsup.com/jquery/form/#getting-started [JQu ...
- Ajax 文件上传
原文地址:http://blog.sina.com.cn/s/blog_5d64f7e3010127ns.html 用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest ...
- node中间层实现文件上传
一般情况下,前端的文件上传一般都是通过form表单的(<input type="file" />)来完成文件的上传,如果使用node中间层完成跨域,文件的上传就需要在n ...
- springmvc+ajax文件上传
环境:JDK6以上,这里我是用JDK8,mysql57,maven项目 框架环境:spring+springmvc+mybaits或spring+springmvc+mybatis plus 前端代码 ...
- 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },&qu ...
- node后台fetch请求数据-Hostname/IP doesn't match certificate's altnames解决方法
一.问题背景 基于express框架,node后台fetch请求数据,报错Hostname/IP doesn't match certificate's altnames..... require(' ...
- Node.js写文件的三种方法
Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...
- AJAX文件上传实践与分析,带HTML5文件上传API。
对于HTML5已经支持AJAX文件上传了,但如果需要兼容的话还是得用一点小技巧的,HTML5等等介绍,先来看看以前我们是怎么写的. 网上可能会有一些叫AJAX文件上传插件,但在AJAX2.0之前是不可 ...
随机推荐
- hdoj 1862 EXCEL排序
EXCEL排序 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- AX2012服务器配置--Windows Server 2012 如何实现多个用户远程桌面登陆?
Windows Server 2012 如何实现多个用户远程桌面登陆?说明:Windows Server 2012默认情况下,只运行2个用户远程桌面登陆,这里我们可以通过安装远程桌面会话主机配置来实现 ...
- linux 通用时钟框架CCF
linux CCF 时钟框架 简单介绍 这里讲的时钟是给soc各组件提供时钟的树状框架,并非内核使用的时间,和其它模块一样,clk也有框架,用以适配不同的平台.适配层之上是客户代码和接口,也就是各模块 ...
- 如何利用 _ViewStart.cshtml对页面添加代码?
_ViewStart.cshtml 添加的代码会出现在页面的最上面(<html> 之前) .这样就造成了我原先很多页面出现兼容性问题(经难是因为<html>之前出现了其它的代码 ...
- [Javascript] IIFE
Javascript modules are a design pattern that allow you to encapsulate your code into smaller self ma ...
- hibernate入门之person表
下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...
- labview 移位寄存器、隧道、索引隧道的区别
Lab view区别:移位寄存器.隧道.索引隧道 最近研究Lab view的时候发现移位寄存器和隧道的功能非常相似但是又有区别 外部数据进入循环体是通过隧道进入的,有几种方式: 图1:For 循环结构 ...
- pnd3
这两天重写了,消除后本身的下落计算还有问题,新产生的块下落和消除已经OK了.消除算法真的很要命.最后还是回归最开始的想法,用递归的方式不断的SPREAD来得到消除的数据.快到月底了,得勤写写了,要不找 ...
- javaBean登录注册
package javabean; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.Res ...
- Vector使用
ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 Vector 类提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大.在删除一些元素之 ...