嘿我试图将我的ajax json输入发送到我的服务器,但它不会工作。
在将json(字符串化)发送到我的服务器时,我的服务器正在哭泣: SyntaxError:意外的输入结束 在Object.parse(native)
但是当我通过Postman发送相同的json时,不会出现错误。
我的阿贾克斯:
$.ajax({
method: "POST",
url: "/new",
data: {ort: park[0], activity: activity, datum: date, teilnehmerzahl: teilnehmerzahl, schwierigkeit : schwierigkeit, dauer : dauer, time : time, treffpunkt : treffpunkt},
dataType: "json",
success: function (data) {
alert(data);
}
, error: function (jqXHR, textStatus, err) {
alert('text status ' + textStatus + ', err ' + err)
}
});
典型的字符串化json:
{"ort":"Bayerischer Wald","activity":"Klettern","datum":"17.09.2015","teilnehmerzahl":"2","schwierigkeit":"Anfänger","dauer":"1h","time":"12:00","treffpunkt":"Hier"}
我的客户:
app.post('/new', jsonParser, function(req,res){
var test = JSON.stringify(req.body);
fs.readFile('./views/neueGruppe.ejs', {encoding: 'utf-8'}, function(err, filestring){
if(err){
throw err;
}
else{
var options = {
host: 'localhost',
port: 3000,
path: '/new',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': test.length
}
}
var req = http.request(options, function(response) {
response.on('data', function (chunk) {
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write(test);
req.end();
}
});
});
我的服务器:
rest.post("/new", jsonParser, function(req,res){
var data = {users:
[
{id: 1, name: "Peter"},
{id: 2, name: "Jessica"}
]}
console.log(req);
res.json(data);
});
当我将客户端上的Content-Type从Json更改为文本时,不会出现任何错误,但也没有发送任何数据。它只发生在我尝试将其作为json发送时,但即使是jsonlint也说它有效的json ......
答案 0 :(得分:3)
使用JSON.stringify方法发送正确的请求。
JSON.stringify()方法将JavaScript值转换为JSON字符串,如果指定了replacer函数,则可以选择替换值,或者如果指定了replacer数组,则可以选择仅包含指定的属性。
<强>语法强>
JSON.stringify(value[, replacer[, space]])
JSON.stringify()将值转换为JSON表示法
$.ajax({
method: "POST",
url: "/new",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ort: park[0], activity: activity, datum: date, teilnehmerzahl: teilnehmerzahl, schwierigkeit : schwierigkeit, dauer : dauer, time : time, treffpunkt : treffpunkt}),
dataType: "json",
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, err) {
alert('text status ' + textStatus + ', err ' + err)
}
});
答案 1 :(得分:2)
要在请求正文中正确发送JSON,请使用JSON.stringify:
$.ajax({
method: "POST",
url: "/new",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ort: park[0], activity: activity, datum: date, teilnehmerzahl: teilnehmerzahl, schwierigkeit : schwierigkeit, dauer : dauer, time : time, treffpunkt : treffpunkt}),
dataType: "json",
success: function (data) {
alert(data);
}
, error: function (jqXHR, textStatus, err) {
alert('text status ' + textStatus + ', err ' + err)
}
});
&#13;
可在此处找到更多信息:jQuery posting valid json in request body