2014-06-10 64 views
1

我很新的骨幹,它是如何工作的,並繼承了一堆代碼,但我解決不了這個根本:骨幹PUT發送數據WWW的形式,進行了urlencoded,而不是應用程序/ JSON

我有一個用戶模型:

var User = Backbone.Model.extend({ 
    idAttribute: 'username', 
    defaults: { 
     username: "", 
     email: "", 
     roles : [], 
     password: "" 
    } 

}); 

var Users = Backbone.Collection.extend({ 
    model: User, 
    initialize: function(args, options) { 
     if (options && options.dialog) { 
      this.dialog = options.dialog; 
     } 
    }, 

    parse: function(response) { 
     if (this.dialog) { 
      this.dialog.populate(response); 
     } 
     return response; 
    }, 

    url: function() { 
     var segment = AdminUrl + "/users"; 
     return segment; 
    } 
}); 

然後在我看來,其他地方我做:

user.save({username: $newtarget.val()},null); 

或 user.save();

的PUT被激發到正確的網址,但每一次它觸發它發送數據

Content-Type application/x-www-form-urlencoded; charset=UTF-8 

但我的球衣端點接受應用程序/ JSON

我到處看別人都在努力把urlencoded的數據但我的問題是另一回事!

參數被髮送的網址參數:

username=admin&email=&password=admin&roles%5B%5D=ROLE_USER&roles%5B%5D=ROLE_ADMIN&id=1 

===編輯===

如果我強迫的內容類型和數據:

user.save({}, {data: JSON.stringify(user.attributes),contentType: "application/json"}); 

認沽工作正常,這是奇怪的。

回答

1

Backbone.emulateJSON = false;

true出於某種原因

從文檔

打開emulateJSON支持不能用 直接應用/ JSON請求處理傳統服務器... ...將編碼body作爲 應用程序/ x-www-form-urlencoded來代替,並將該模型發送到名爲model的 表單參數中。

http://backbonejs.org/docs/backbone.html

+0

感謝回答,它不是,也文檔說,這將發佈參數JSON「將發送一個名爲模型形式PARAM模型。」但它通過我的URL作爲URL參數:username = admin&email =&password = admin&roles%5B%5D = ROLE_USER&roles%5B%5D = ROLE_ADMIN&id = 1 – bugg

+0

put包含什麼? – exussum

+0

你可以做一個JS小提琴嗎? – exussum

相關問題