AJAX 跨域请求 - JSONP获取JSON数据

Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序。

不过,由于受到浏览器的限制,该方法不允许跨域通信。如果尝试从不同的域请求数据,会出现安全错误。如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误。但是,如果仅停留在自己的服务器上,Web 应用程序还有什么用处呢?如果需要从多个第三方服务器收集数据时,又该怎么办?

Read More

php分页类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php    

class Pages {

//分页
//Tcount 总数
//Tpage 每页显示数量
//p 当$p=3时,打开http://trunk.com/houtai/life/shop则跳转到第3
static function multi($Tcount, $Tpage, $p, $url='', $url1='') {

$mu = "";
//总页数
$z = ceil($Tcount / $Tpage);
$l = 10; //长度
$v = $l/2;

$diy = ($p>1 && $p<$z)?($p-1):0;
$mu.="<a href='".$url."1".$url1."' class='curved'>首页</a>";
$mu .= "\r\n";
if($p-1>=1){
//$mu .= "<a href=\"".$url.$url1."\" title=\"上一页\" class=\"pre\">上一页</a>\r\n";
}
if($p>$v) $mu .= "\r\n";
//开始
$ca = (($p - $v)<0) ? 0 : ($p - $v);
//结束
$cb = (($p + $v)>$z) ? $z : ($p + $v);

if($cb-$ca<($l+1)){
$x = ($l+1)-($cb-$ca);
if($ca==0 && $cb<$z){
if(($z-$cb)<$x){
$cb = $cb + ($z-$cb);
}else{
$cb = $cb + $x;
}
}elseif($cb==$z && $ca>0){
if(($ca-$x)<0){
$ca = 0;
}else{
$ca = $ca - $x;
}
}
}
for($i=$ca;$i<$cb;$i++){
//$pi = ($p==($i+1))?"class=\"current\"": "";
if($p==($i+1)){
$mu .= "<a class=\"active curved\">".intval($i+1)."</a>\r\n";
}else{
if($i==0){
$mu .= "<a href=\"".$url.$url1."\" title=\"第".intval($i+1)."页\" class=\"curved\">[".intval($i+1)."]</a>\r\n";
}else{
$mu .= "<a href=\"".$url.($i+1).$url1."\" title=\"第".intval($i+1)."页\" class=\"curved\">[".intval($i+1)."]</a>\r\n";
}
}
}

if(($p+$v)<$z) $mu .= "\r\n";
$end = ($p<$z)?$p+1:$z;
if($p+1<=$z){
//$mu .= "<a href=\"".$url.($p+1).$url1."\" title=\"下一页\" class=\"pre\">下一页</a>\r\n";
$mu .= "\r\n";
}
$mu.="<a href='".$url.$z.$url1."' class=\"curved\">末页</a>";
//$mu .= "\r\n";
$mu.=" 共{$Tcount}条记录/{$z}页";
//$mu .= "\r\n";
//$mu.="每页显示{$Tpage}条";
return $mu;
}

}

//example:
$sql = "select * from life_shop where id = {$id} order by order_id desc ";
$query = $this->db->query($sql);
$total = $query->num_rows();
$page_no = $page_no<1 ? 1 : $page_no;
$query = $this->db->query($sql." limit ".($page_no-1)*$this->pagesize.",".$this->pagesize);
$data['lists'] = $query->result_array();

$this->load->library('pages'); //加载上面的pages类
$data['pagestr'] = $this->pages->multi($total,$this->pagesize,$page_no,'/houtai/life/shop/',''); //页面上输出的pagestr字符串即为分页代码
$this->load->view('houtai/life/shop',$data);

apache做反向代理服务器

apache做反向代理服务器
apache代理分为正向代理和反向代理:
1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器)
适用于:
①局域网的代理服务器(一般是网关,相当于squid的一般用法)
②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理

Read More

MYSQL外键(Foreign Key)的使用

在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。
外键的使用条件:

  1. 两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);
  2. 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;
  3. 外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;

外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;

Read More