jQuery没有在AJAX POST请求上发送JSON

时间:2014-03-13 08:09:53

标签: javascript jquery ajax json mongodb

我在这里有点困惑,我正在尝试使用以下代码将数据发布到我的节点js服务器:

$.ajax({type:'POST',
        url:'/map',
        data:'type=line&geometry='+str,
        success:function(msg)
        {
          console.log(msg);
        },
        datatype:'json'     
    });

这是结果:

 { type: 'line', geometry: 'b~cqCge{b[mv|q@xnyC' }

这不是JSON。我以前曾尝试使用contentType并按照以下方式执行此操作:

$.ajax({type:'POST',
        url:'/map',
        data:{type:'line',geometry:str},
        success:function(msg)
        {
            console.log(msg);
        },
        datatype:'json',
        contentType:"application/json"  
    });

即使这样也没有任何变化发送数据。我也尝试使用第一个数据字符串的上述方法。我也尝试将processData设置为false以及中的方法。代码块。

我必须将数据放在JSON并使用AJAX,因为我正在尝试insert into mongodb from node js using mongojs and it fails

6 个答案:

答案 0 :(得分:7)

实际上dataType与输入无关,而是输出。

相反,您想要的是将输入data字符串化,然后将其作为单个变量发送到您的后端,然后可以对其进行解码:

$.ajax({type:'POST',
    url:'/map',
    data: {data: JSON.stringify({type: 'line', geometry: str})},
    success:function(msg)
    {
       console.log(msg);
    },
    dataType:'json'     
});

在你的后端,你只需解码data,它现在应该是JSON中一个功能齐全的对象。

请注意,您需要JSON类,默认情况下JQuery不包含此功能:https://github.com/douglascrockford/JSON-js

答案 1 :(得分:2)

我遇到了同样的问题,NodeJS API后端正在接收Undefined request.body。

我是如何通过调用AJAX来解决的:

$.ajax({
    url: serviceURL,
    data: JSON.stringify(jsonData),
    dataType: 'json',
    type: 'POST',
    contentType: 'application/json',
    success: response => console.log(response),
    error: e => console.log(e)
});

请注意,我必须同时提及contentType: 'application/json'dataType: 'json'。另请注意,有效负载JSON数据需要JSON.stringify

答案 2 :(得分:1)

使用dataType代替datatype注意 TType中的资本,

dataType:'json',

试试这个,

$.ajax({
    type:'POST',
    url:'/map',
    data:{type:'line',geometry:str},
    dataType:'json',// use dataType not datatype
    success:function(msg) {
        console.log(msg);
    }     
});

阅读jquery.ajax()

答案 3 :(得分:1)

Url = "http://example.com";

var postData = $('#selectorid').serialize();

    $.ajax({
            type: 'POST',
            data: postData+'&FormType=InsertForm',
            url: Url,
            success: function(data){
                    //console.log(data);
            },
            error: function(){
                //console.log(data);
                alert('There was an error in register form');
            }
            });

在php中发布所有值。 请试一试。

答案 4 :(得分:0)

试试这个

$.ajax({ type: 'POST',
        url: '/map',
        data: {type:"line",geometry : str},
        success: function (msg) {
            console.log(msg);
        },
        dataType: 'json'
    });

与@Rohan Kumar提到的一样,将datatype替换为dataType

答案 5 :(得分:0)

我也遇到过这个问题,但这段代码解决了我的问题:

$.ajax({
  method: 'POST',
  type: "POST",
  url: "/admin/get-message-details",
  data: {"messageId":messageId},
  success: function(){

  }
});

顺便说一下,从客户端到服务器的数据以字符串的形式传输。因此,您可以以 JSON 结构准备和发送数据。