在写http://lettuce.phodal.com/ 遇到一些有意思的问题,比如ajax的post。原先的post和get的用法是:
lettuce.get('/bower.json', function(result){
equal(result["name"], "lettuce");
done();
})
lettuce.post("http://127.0.0.1:5000/some", "something", function(data){
console.log(data)
})
写法是:
Lettuce.get = function (url, callback) {
Lettuce.send(url, 'GET', callback);
};
Lettuce.post = function (url, data, callback) {
Lettuce.send(url, 'POST', callback, data);
};
Lettuce.send = function (url, method, callback, data) {
data = data || null;
var request = new XMLHttpRequest();
if (callback instanceof Function) {
request.onreadystatechange = function () {
if (request.readyState === 4 && (request.status === 200 || request.status === 0)) {
callback(request.responseText);
}
};
}
request.open(method, url, true);
if (data instanceof Object) {
data = JSON.stringify(data);
request.setRequestHeader('Content-Type', 'application/json');
}
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
request.send(data);
};
后来在使用时候发现与flask
一起的时候会有一些问题,而用jQuery是正常的。于是,搜罗了一堆JavaScript post和get的用法
var request = new XMLHttpRequest();
request.open("POST", "http://127.0.0.1:5000/some", true);
request.send({});
var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance
xmlhttp.open("POST", "http://127.0.0.1:5000/some");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(JSON.stringify({name:"John Rambo", time:"2pm"}));
var r = new XMLHttpRequest();
r.onreadystatechange = function(){
if(r.readyState==4 && (r.status==200 || r.status==0))
success(r.responseText);
};
r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
r.setRequestHeader("Connection", "close");
r.open("POST","http://127.0.0.1:5000/some",true);
r.send({});
发现最后一个是可以work的,然而已经不是json
格式了。
最后flask的处理request变为:
request.data
围观我的Github Idea墙, 也许,你会遇到心仪的项目