2011-12-23 3 views
0

Это мой передний конец кода (с помощью fetch)NodeJS и Магистральная-х начнут извлекать

var MyModel = Backbone.Model.extend(); 
    var MyCollection = Backbone.Collection.extend({ 
     url: '/questions', 
     model: MyModel 
    }); 
    var coll = new MyCollection(); 
    coll.fetch({ 
     error: function (collection, response) { 
      console.log('error', response); 
     }, 
     success: function (collection, response) { 
      console.log('success', response); 
     } 
    }); 

и это мой фоновым код (с помощью app.get)

app.get('/questions', function (request, response) { 
    console.log('Inside /questions'); 
    response.writeHead(200, { 
     'Content-Type': 'text/json' 
    }); 
    response.write('{test:1}'); 
    response.end(); 
}); 

Проблема заключается в том, что, хотя ответ как ожидается, вызывается обратный вызов на стороне клиента error. Когда я удаляю строку response.write('{test:1}');, вызывается обратный вызов success. Любые идеи относительно того, что я могу делать неправильно?

ответ

4

Well {test:1} недействителен JSON.

{ "test":"1" } ИЛИ { "test":1 } , однако, попробуйте один из тех, кто вместо этого.

Ключи - это строки в JSON, а строки в JSON должны быть завернуты в двойные кавычки, выйдите JSON.org для получения дополнительной информации.

Чтобы убедиться в наличии действительного JSON для более сложных объектов просто использовать JSON.stringify():

var obj = { test : 1 }; 
response.write(JSON.stringify(obj)); //returns "{"test":1}" 

Также correct Content-Type for json является application/json

+0

Большое спасибо! Это действительно проблема. – Randomblue

+0

Есть ли способ узнать больше информации об ошибке? В будущем мне хотелось бы сказать, что это недействительный JSON ... – Randomblue

+0

Я не большой парень 'node.js' или' backbone'. Я бы предположил, что ответ об ошибке содержит некоторую информацию; Если бы я не опубликовал другой вопрос, извините .. – Chad

1

Если вы используете выразить вам нужно res.send будет автоматически преобразовывать объекты в JSON. Если вы беспокоитесь об этом, есть новый, который называется res.json, который преобразует что-либо в JSON.

var obj = {super: "man"} 
res.send(obj) // converts to json 
res.json(obj) // also converts to json 

Вам не нужно писать writeHead(), write() или end().

http://expressjs.com/guide.html

Смежные вопросы