Blog | Phodal - A Growth Engineerhttp://www.phodal.com/blog/2015-02-03T05:40:45.835099+00:00BlogJavaScript ajax小结2015-01-26T12:01:42+00:002015-02-03T05:40:45.835099+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/javascript-post-get-notes/在写[http://lettuce.phodal.com/](http://lettuce.phodal.com/) 遇到一些有意思的问题,比如ajax的post。原先的post和get的用法是:
```javascript
lettuce.get('/bower.json', function(result){
equal(result["name"], "lettuce");
done();
})
```
```javascript
lettuce.post("http://127.0.0.1:5000/some", "something", function(data){
console.log(data)
})
```
写法是:
```javascript
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的用法
```javascript
var request = new XMLHttpRequest();
request.open("POST", "http://127.0.0.1:5000/some", true);
request.send({});
```
```javascript
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"}));
```
```javascript
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