Jon*_*nas 68 ajax jquery post json http-post
我想将Json发布到同一台服务器上的Web服务.但我不知道如何使用JQuery发布Json.我尝试过这段代码:
$.ajax({
type: 'POST',
url: '/form/',
data: {"name":"jonas"},
success: function(data) { alert('data: ' + data); },
contentType: "application/json",
dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)
但是使用这个JQuery代码,数据不会在服务器上作为Json接收.这是服务器上的预期数据:{"name":"jonas"}但是使用服务器接收的JQuery name=jonas.或者换句话说,它是"urlencoded"数据,而不是Json.
有没有办法使用JQuery以Json格式发布数据而不是urlencoded数据?或者我是否必须使用手动ajax请求?
lon*_*day 131
您传递的是对象,而不是 JSON字符串.传递对象时,jQuery使用$.param序列化对象为名称 - 值对.
如果将数据作为字符串传递,则不会序列化:
$.ajax({
type: 'POST',
url: '/form/',
data: '{"name":"jonas"}', // or JSON.stringify ({name: 'jonas'}),
success: function(data) { alert('data: ' + data); },
contentType: "application/json",
dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)
根据lonesomeday的回答,我创建了一个jpost包含某些参数的东西.
$.extend({
jpost: function(url, body) {
return $.ajax({
type: 'POST',
url: url,
data: JSON.stringify(body),
contentType: "application/json",
dataType: 'json'
});
}
});
Run Code Online (Sandbox Code Playgroud)
用法:
$.jpost('/form/', { name: 'Jonh' }).then(res => {
console.log(res);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138142 次 |
| 最近记录: |