2013-12-19 5 views
0

Я использую bootstrap 3 и jquery для разработки своего приложения. Мой вопрос: почему я получил нулевой объект, если не использовал JSON.stringify вместо formValues?JSON - Почему я получил нулевой объект, когда не использовал JSON.stringify?

Перед использованием JSON.stringify

var that = this; 
var formValues = { 
    userId: 315, 
    locale: "en", 
}; 
this.collection.fetch({ 
    type: "POST", 
    contentType: 'application/json', 
    dataType: "json", 
    data: formValues, 
    success: function(collection, response) { 
     var template = _.template(accountsSummaryTemplate, { 
      accounts: that.collection.models 
     }); 
     that.$el.html(template); 
     console.log(that.collection); 
    }, 
    error: function(collection, response) { 
     console.log(that.collection); 
    } 
}); 

После использования JSON.stringify

вар, что это =;

function formToJSON() { 
return JSON.stringify({ 
    "userId": 315, 
    "locale": "en", 
}); 
} 
this.collection.fetch({ 
    type: "POST", 
    contentType: 'application/json', 
    dataType: "json", 
    data: formToJSON(), 
    success: function(collection, response) { 
     var template = _.template(accountsSummaryTemplate, { 
      accounts: that.collection.models 
     }); 
     that.$el.html(template); 
     console.log(that.collection); 
    }, 
    error: function(collection, response) { 
     console.log(that.collection); 
    } 
}); 

Большое спасибо.

ответ

1

Если data свойство является объектом, JQuery упорядочивает его $.param:

> $.param({userId: 315, locale: "en"}); 
"userId=315&locale=en" 

Если вы передаете в строке вместо этого, JQuery не сериализовать. Посмотрите на запросы, используя инструменты разработчика вашего веб-браузера.

0

Потому что это не правильная строка данных.

var formValues = "userid=5&locale=en"; 
0

Потому что объект JS не является JSON. JSON - это строка, объект JS - это объект. Если fetch использует jQuery.ajax, он ожидает либо объект JS, либо строку запроса (которая равна не JSON): "userId=315&locale=en".

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