0

リモートサーバー (Rails) に投稿したい JSON オブジェクトがあります。「application/json」としてサーバーに送信しようとすると、POST パラメーターがどこかで URL エンコードされた文字列に変換されて失敗します。例えば:

appAPI.request.post({
  url: "http://mybackend",
  postData: {hello: 'world', foo: 'bar'},
  onSuccess: function(response) {
    console.log("postback succeeded with response: " + response)
  },
  onFailure: function(httpCode) {
    console.log("postback failure: " + httpCode)
  },
  contentType: 'application/json'
});

HTTP 500 を返し、サーバーは不正な形式の JSON オブジェクトから不平を言っています。

Error occurred while parsing request parameters.
Contents:

MultiJson::LoadError (784: unexpected token at 'hello=world&foo=bar'): 
  /Users/hammady/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/json/common.rb:148:in `parse'
  ...

JSON オブジェクトを Rails バックエンドに送信するには、他に何をすればよいですか?

4

2 に答える 2

3

最初にオブジェクトを文字列化する必要があります。

postData: JSON.stringify({hello: 'world', foo: 'bar'});
于 2013-10-14T13:38:22.697 に答える
1

JSON.stringifyを使用して、投稿されたデータを文字列化します

appAPI.request.post({
  url: "http://mybackend",
  postData: JSON.stringify({hello: 'world', foo: 'bar'}),
  onSuccess: function(response) {
    console.log("postback succeeded with response: " + response)
  },
  onFailure: function(httpCode) {
    console.log("postback failure: " + httpCode)
  },
  contentType: 'application/json'
});
于 2013-10-12T09:43:46.797 に答える