如何使用JQuery发布JSON数据?

2024-10-02 22:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将Json发布到同一服务器上的web服务。但我不知道如何使用JQuery发布Json。我试过这个密码:

$.ajax({
    type: 'POST',
    url: '/form/',
    data: {"name":"jonas"},
    success: function(data) { alert('data: ' + data); },
    contentType: "application/json",
    dataType: 'json'
});

但是使用这个JQuery代码,数据在服务器上不会作为Json接收。这是服务器上的预期数据:{"name":"jonas"},但使用JQuery服务器接收name=jonas。或者换句话说,它是“urlencoded”数据,而不是Json。

有没有什么方法可以使用JQuery以Json格式而不是urlencoded格式发布数据?还是必须使用手动ajax请求?


Tags: 数据name服务器webjson密码data格式
3条回答

我尝试了宁芬的解决方案,但直到我调整了它才对我起作用-见下文。移除contentType,不编码json数据

$.fn.postJSON = function(url, data) {
    return $.ajax({
            type: 'POST',
            url: url,
            data: data,
            dataType: 'json'
        });

基于lonesomeday的答案,我创建了一个包装特定参数的jpost

$.extend({
    jpost: function(url, body) {
        return $.ajax({
            type: 'POST',
            url: url,
            data: JSON.stringify(body),
            contentType: "application/json",
            dataType: 'json'
        });
    }
});

用法:

$.jpost('/form/', { name: 'Jonh' }).then(res => {
    console.log(res);
});

您传递的是一个对象,而不是JSON字符串。传递对象时,jQuery使用^{}将对象序列化为名称-值对。

如果将数据作为字符串传递,则不会对其进行序列化:

$.ajax({
    type: 'POST',
    url: '/form/',
    data: '{"name":"jonas"}', // or JSON.stringify ({name: 'jonas'}),
    success: function(data) { alert('data: ' + data); },
    contentType: "application/json",
    dataType: 'json'
});

相关问题 更多 >