Javascript jQuery未在AJAX POST请求上发送JSON
我在这里有点困惑,我试图使用以下代码将数据发布到我的node js服务器:Javascript jQuery未在AJAX POST请求上发送JSON,javascript,jquery,ajax,json,mongodb,Javascript,Jquery,Ajax,Json,Mongodb,我在这里有点困惑,我试图使用以下代码将数据发布到我的node js服务器: $.ajax({type:'POST', url:'/map', data:'type=line&geometry='+str, success:function(msg) { console.log(msg); }, datatype:'json' }); 结果如下: { t
$.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
,这一点很重要,因为我正在尝试使用它
$.ajax({ type: 'POST',
url: '/map',
data: {type:"line",geometry : str},
success: function (msg) {
console.log(msg);
},
dataType: 'json'
});
与前面提到的@Rohan Kumar一样,将
datatype
替换为datatype使用datatype
而不是datatype
,注意T
是Type
中的大写字母
dataType:'json',
试试这个
$.ajax({
type:'POST',
url:'/map',
data:{type:'line',geometry:str},
dataType:'json',// use dataType not datatype
success:function(msg) {
console.log(msg);
}
});
Read实际上数据类型
与输入无关,与输出无关
相反,您需要的是对输入的数据进行字符串化,然后将其作为单个变量发送到后端,后端可以对其进行解码:
$.ajax({type:'POST',
url:'/map',
data: {data: JSON.stringify({type: 'line', geometry: str})},
success:function(msg)
{
console.log(msg);
},
dataType:'json'
});
通过这种方式,您只需在后端解码数据
,它现在应该是一个来自JSON的功能齐全的对象
注意:您需要JSON类来完成此操作,JQuery默认不包括此功能:
在php中发布所有值。
请试一试。我遇到了同样的问题,NodeJS API后端接收到了未定义的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.stringify
-ing需要对有效负载JSON数据进行处理。我也遇到了这个问题,但这段代码解决了我的问题:
$.ajax({
method: 'POST',
type: "POST",
url: "/admin/get-message-details",
data: {"messageId":messageId},
success: function(){
}
});
顺便说一句,数据从客户端到服务器以字符串的形式传输。因此,您可以准备并发送JSON结构中的数据。您的代码有错误,在数据:{…}
之后错过了一个,
,我敢打赌str
实际上是一个对象,因为这闻起来有发送GeoJSON类型数据的企图。这里有很多响应,但我会寻找从对象生成JSON字符串的东西。只是为了帮你挑对人。并将“contentType”保留在那里。你的服务器可能不在乎,但它应该在乎。@NeilLunn str是通过使用google.maps.Geometry.encodePath
获取的字符串,它返回字符串正在添加字符集:'utf-8
nessecary???@user2309862我从不这样做,除非真的需要它,否则我会说不。我一直在工作,直到昨晚10点才试图弄清楚这一点。我从后端的变量中得到了一个未定义的结果,实际上,在前端,我的请求发送了一个对象。我今天(星期六)要进去,我要试试这个解决方案,看看它是否有效!如果有,我会投赞成票的!:)这是一个解决了我的问题,所以我投了更高的票。我必须把它按这样的顺序排列,并包括内容类型,因为没有它是不行的。谢谢
$.ajax({
method: 'POST',
type: "POST",
url: "/admin/get-message-details",
data: {"messageId":messageId},
success: function(){
}
});