魏长东

weichangdong

正在查看: 2016年07月日志归档(第 1 页 / 共 19 篇)

js提交网址转码

做项目遇到一个小问题,通过get提交url的时候,因为url里面含有&符号,所以提交到服务器的时候,url就被分割了,导致接受到的url就不是原本输入的url了,就想到可js转码。

escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符 在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

 

encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

 

encodeURIComponent() 方法:(用了这个函数之后 就ok了)
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码, 比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

nodejs 解析html模块

  • Haml haml implementation

  • Jade haml.js successor

  • EJS Embedded JavaScript

  • CoffeeKup CoffeeScript based templating

  • jQuery Templates for node

  •  

  • 用了EJS,觉得这个挺好的 有点像smarty,不想Jade 感觉页面好复杂的样子啊。其实我没用过Jade 只是接触了点EJS.

  • var app = express();
    app.engine("html", (require("ejs")).renderFile);
    
    app.set("view engine", "ejs");
    app.set("views", __dirname + "/views");
    app.use(express.static(__dirname + "/static"));
    
    app.use(cookieParser());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json());

nodejs 接受参数

接收post请求的参数时用req.body;
接收get请求的参数时用req.query;

nodejs 初始化代码

var http = require("http");
var express = require("express");
var session = require("cookie-session");
var cookieParser = require("cookie-parser");
var bodyParser = require("body-parser");
var cfg = require("./cfg");
var urls = require("./wcd");

var app = express();
app.engine("html", (require("ejs")).renderFile);

app.set("view engine", "ejs");
app.set("views", __dirname + "/views");
app.use(express.static(__dirname + "/static"));

app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use(session({
 keys: ["ozgweb"]
}));

//url路由
urls.startUrls(app);

app.on("close",
 function(err) {
  console.log("app close");
 }
);

(http.createServer(app)).listen(cfg.SERVER_PORT,
 function() {
  console.log(cfg.SERVER_PORT + "正在运行中...");
 }
);

nodejs 连接mysql

发现nodejs和lua差不多,就是用各种第三方的包。这一点我觉得远远比不上php,多数东西都可以自己搞定,就算用第三方,比如redis memcache,装个扩展,很easy搞定。

nodejs连接mysql主要是装nodejs的mysql的package。

»»阅读全文

lua中 点(.)和冒号(:)的区别

local class = {}  
  
function class:new(x, y)  
    local mt = {}  
    mt.x = x   
    mt.y = y   
    self.__index = self  
    setmetatable(mt, self)  
    return mt   
end  
  
-- 等效 function class.printf(self)  
function class:printf()  
    print(self.x ,self.y)  
end  
  
different = class:new(1,2)  
  
-- different.printf()   这个不对  函数内找不到self  
-- different:printf()   --正确  默认形参是self  
different.printf(different)  --正确   没有默认形参 需手动添加在函数中需要用到的参数  
  
--规则: 在使用的时候 属性用点 函数用冒号可以避免混乱

nodejs 发get post请求

有时候在linux下,发送post一般用curl然后-d带上post数据,或者直接写php代码来发送请求。

用nodejs实现了下发送get和post请求。

post是向我的本地环境发送的,所以需要开启服务。node post 就OK。

var http = require("http");
http.createServer(function(req, res) {
	var body = [];
res.write(req.method);
//console.log(req.method);
    if(req.method == 'GET') {
		//res.write(res.query.toString());
		res.end("PATH: " + req.url);
	} else {
		//console.log(req.headers);
		req.on('data', function (chunk) {
			body.push(chunk);
		});

		req.on('end', function () {
			body = Buffer.concat(body);
			console.log(body.toString());
		});
	}
}).listen(8080);
console.log("HTTP server is listening at port 8080.");

»»阅读全文

监测是否离开页面

<script>
var hidden, state, visibilityChange; 
if (typeof document.hidden !== "undefined") {
	hidden = "hidden";
	visibilityChange = "visibilitychange";
	state = "visibilityState";
} else if (typeof document.mozHidden !== "undefined") {
	hidden = "mozHidden";
	visibilityChange = "mozvisibilitychange";
	state = "mozVisibilityState";
} else if (typeof document.msHidden !== "undefined") {
	hidden = "msHidden";
	visibilityChange = "msvisibilitychange";
	state = "msVisibilityState";
} else if (typeof document.webkitHidden !== "undefined") {
	hidden = "webkitHidden";
	visibilityChange = "webkitvisibilitychange";
	state = "webkitVisibilityState";
}

// 添加监听器,在title里显示状态变化
document.addEventListener(visibilityChange, function() {
	//document.title = document[state];
	if (document[state] == 'visible'){
		document.title = 'weichangdong'
	} else {
		document.title = 'look at me'
	}
}, false);

// 初始化
//document.title = document[state];
document.title = 'weichangdong';
</script>

NodeJS应用场景

每次学习一个新的语言,我就会先看看他应用的场景。之前学了一阵子lua,主要的应用场景是和nginx配合,我觉得还是挺有用的,暂时只是学了一点皮毛,等到实际需要的时候在深入学习。

之前看到一个网站有一个功能,就是实时统计网站在线人数,打开网页个数的功能,我觉得很牛逼,一看原来是nodejs实现的,就想了解了解nodejs。之前也在网上找了一个nodejs写的聊天系统,虽然没多少代码,但是聊天系统基本功能还是实现了。

»»阅读全文

simple_html_dom php操作html元素

<?php

include "simple_html_dom.php" ;
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';

// Find all links 
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';
// Create DOM from URL
$html = file_get_html('http://slashdot.org/');

// Find all article blocks
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;
}

print_r($articles);
// Create DOM from string
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');

$html->find('div', 1)->class = 'bar';

$html->find('div[id=hello]', 0)->innertext = 'foo';

echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>

»»阅读全文

php get_class vs get_called_calss

class foo  {
    static public function  test () {
         var_dump(get_class());
    }
}

class bar  extends  foo {
}

foo::test();
bar::test();

echo "====================\n\n";

class  foo2  {
    static public function  test () {
         var_dump(get_called_class());
    }
}

class  bar2  extends  foo2  {
}

foo2::test();
bar2::test();

»»阅读全文