资讯专栏INFORMATION COLUMN

JSONP

springDevBird / 2055人阅读

摘要:显然不能发起一个请求,所以使用,表单是可以发起一个请求的,而且可以指定请求的方式。发送请求我们发现,居然也能发送请求,那更好了,请求返回的是空字符串,那可比图片小多了。

数据库

有时候,我们需要长久的存储数据,不随着外界因素的改变而改变,这样的数据栖息地可以称之为数据库。

version1.0-表面工作 建立一个扣款功能做例子



    
    pay



    

您的账户余额: 100

存在的问题

之所以称之为表面,是因为,所有的操作都是表面现象,当页面刷新时,一切都会回到初始状态。而且,别人很容易就能够获取你的信息。最好是,我们去调取数据库里你的信息,然后显示在页面上。

version2.0-将操作在后端进行

以往,我们是在前端的代码中去改用户的余额。现在,不,我们去后端直接改数据库里的余额,然后,把后端数据库的金额显示在前端页面上。而前端用来向后端发起一个请求,请求更改数据库里的余额。

>

使用Javascript写的后端代码:

与之前区别在于,这次不需要要用到刷新页面,当然刷新页面功能也没问题

与之前区别在于,这次返回的是一张图片response.write(fs.readFileSync(你的图片路径));

//和之前一样,读取数据库中金额,并显示在页面上,但这里并不一定会用到这些代码,因为我们不需要刷新页面了
if(path === "./"){
    var index_string = fs.readFileSync("./index.html","utf8");
    var amount = fs.readFileSync("./db","utf8");
    index_string.replace("$$amount$$",amount);
    response.setHeader("Content-type","text/html;charset=utf-8");
    response.write(string);
    response.end();
}

//修改数据库中金额,成功后返回一张图片
else if(path === "/pay"){
    var amount = fs.readFileSync("./db","utf8");
    var newAmount = amount - 1;
    fs.writeFileSync("./db",newAmount);
    response.setHeader("Content-type","image/jpg");
    response.write(fs.readFileSync(你的图片路径));
    response.end();
}

优点

不用像`