就不啰嗦了,直接给正确答案。
一 服务器端 也就是 node.js
& express
:
npm install cors --save
引入 var cors = require('cors');
使用 app.use(cors());
这就搞定了服务器端。 二 客户端 也就是 js
& jQuery
:
$.post()
了,得用 $.ajax()
$.ajax({ type: 'POST', url: '...', data: JSON.stringify(params), processData: false, contentType: 'application/json', dataType: 'json'}).then(function(ret){ alert(ret);});
除了 {type: 'POST', url: '...', dataType: 'json'}
这几个参数没有变化之外,
data
得先用 JSON.stringify()
手动转换成 json
字符串,processData
指定为 false
告诉 jQuery
不要再对 data
进行处理,contentType
指定为 application/json
告诉服务器,我发送的数据是 json
格式。 我自己解决这问题的时候,搜索到的答案都少指定了 processData
,
{ '{id:123, name:"asd"}' }
,可能是 jQuery
不同版本之间的差别吧,反正手动指定一下 processData: false
就不会错。 但为什么服务器端收到的会是一个 OPTIONS
和一个 POST
请求?