jquery ajax node,jquery ajax post json and node express
在開發(fā)中,我們需要通過ajax向node服務(wù)端發(fā)送數(shù)據(jù),而JavaScript天然對json的解析極其友好,所以我們一般都是通過ajax向服務(wù)端發(fā)送一個對象,直接在服務(wù)端使用點操作獲取對象內(nèi)容。
front end: $.post(url,{dataKey:dataValue});
node: app.post('/1', function(req, res) {
var body = req.body;
var dataValue = body.dataKey;
});
看上去這是一個非常友好的操作。然而實際上這個操作會在服務(wù)端報錯。
jQuery.ajax發(fā)送的post data如果你用瀏覽器console查看,就會發(fā)現(xiàn)它會處理成http query的形式,也就是key1=value1&key2=value2的形式而在發(fā)送的時候,發(fā)送的默認類型是text。
這里存在兩個問題:1.post data數(shù)據(jù)格式會被改變,不在是json格式,而是htttp query格式;2.數(shù)據(jù)類型不是json,而是text。
因此,我們必須對上面這兩個問題一一解決。通過stackoverfollow上的一些學(xué)習(xí),我找到了解決方案。首先是數(shù)據(jù)格式:
$.post(url,JSON.stringify({key:value}));
這樣發(fā)送到服務(wù)端的數(shù)據(jù)格式就是json格式了。但是它還是一個字符串,而非json數(shù)據(jù)類型。我們要通過http請求的contentType這個字段來強制讓發(fā)送的數(shù)據(jù)被認定為json類型,所以我們把上面的ajax代碼改為:
$.ajax({
url: url,
method: 'post',
data: JSON.stringify({key:value}),
contentType: "application/json"});
如此一來,我們發(fā)送到服務(wù)端的數(shù)據(jù)無論是格式上,還是數(shù)據(jù)類型上,都是可以被JavaScript使用點操作符操作的json對象了。
2016-07-29
2528
總結(jié)
以上是生活随笔為你收集整理的jquery ajax node,jquery ajax post json and node express的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超凡先锋怎么进入维护服务器,超凡先锋新手
- 下一篇: ajax传递excel后台接收,前端上传