Javascript Phonegap Ajax发布到Rails 3.2.2时获取MultiJson::DecodeError(756:意外标记

Javascript Phonegap Ajax发布到Rails 3.2.2时获取MultiJson::DecodeError(756:意外标记,javascript,ruby-on-rails,ajax,cordova,Javascript,Ruby On Rails,Ajax,Cordova,我正在尝试做一个从phonegap到rails 3.2.2 scaffold的简单文章 class ImagesController < ApplicationController # GET /images # GET /images.json def index @images = Image.all respond_to do |format| format.html # index.html.erb format.json {

我正在尝试做一个从phonegap到rails 3.2.2 scaffold的简单文章

class ImagesController < ApplicationController
  # GET /images
  # GET /images.json
  def index
    @images = Image.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @images }
    end
  end

  # GET /images/1
  # GET /images/1.json 
  def show
    @image = Image.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @image }
    end
  end

  # GET /images/new
  # GET /images/new.json
  def new
    @image = Image.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @image }
    end
  end

  # GET /images/1/edit
  def edit
    @image = Image.find(params[:id])
  end

  # POST /images
  # POST /images.json
  def create
    @image = Image.new(params[:image])

    respond_to do |format|
      if @image.save
        format.html { redirect_to @image, notice: 'Image was successfully created.' }
        format.json { render json: @image, status: :created, location: @image }
      else
        format.html { render action: "new" }
        format.json { render json: @image.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /images/1
  # PUT /images/1.json
  def update
    @image = Image.find(params[:id])

    respond_to do |format|
      if @image.update_attributes(params[:image])
        format.html { redirect_to @image, notice: 'Image was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @image.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /images/1
  # DELETE /images/1.json
  def destroy
    @image = Image.find(params[:id])
    @image.destroy

    respond_to do |format|
      format.html { redirect_to images_url }
      format.json { head :no_content }
    end
  end
end
我认为这与我格式化json对象的方式有关,因为当我更改时:

var data = '{ image: { name: "noway" } }';
var data = '{ image: { name: "noway" } }';
致:

我得到:

Started POST "/images.json" for 10.0.1.14 at 2012-04-22 22:57:03 -0500
Processing by ImagesController#create as JSON
  Parameters: {"image"=>{}}
WARNING: Can't verify CSRF token authenticity
   (0.1ms)  begin transaction
  SQL (24.1ms)  INSERT INTO "images" ("created_at", "name", "updated_at") VALUES (?, ?,  ?)  [["created_at", Mon, 23 Apr 2012 03:57:03 UTC +00:00], ["name", nil], ["updated_at",   Mon, 23 Apr 2012 03:57:03 UTC +00:00]]
   (46.0ms)  commit transaction
Completed 201 Created in 76ms (Views: 1.9ms | ActiveRecord: 70.2ms)

不知何故,我错过了json数据的生成吗?

我能够发布更改行的帖子:

致:

使用JSON stringify方法在webrick中生成以下结果:

Started POST "/images.json" for 192.168.1.139 at 2012-04-23 17:54:58 -0500
Processing by ImagesController#create as JSON
  Parameters: {"image"=>{"name"=>"noway"}}
WARNING: Can't verify CSRF token authenticity
   (0.1ms)  begin transaction
  SQL (1.1ms)  INSERT INTO "images" ("created_at", "name", "updated_at") VALUES (?, ?, ?)  [["created_at", Mon, 23 Apr 2012 22:54:58 UTC +00:00], ["name", "noway"], ["updated_at",   Mon, 23 Apr 2012 22:54:58 UTC +00:00]]
   (45.8ms)  commit transaction
Completed 201 Created in 51ms (Views: 1.4ms | ActiveRecord: 47.0ms)

嘿,事实上,这也是使其适用于应用程序/json编码所需的。否则,Rails会不断抛出MultiJSON解析错误。您必须获得对答案的投票。为了进一步说明,
“{image:{name:“noway”}”“
的JSON格式不正确。JSON指定您也在密钥周围加引号。它需要如下所示:
'{“image”:{“name”:“noway”}'
,这是JSON.stringify将生成的内容。
Started POST "/images.json" for 10.0.1.14 at 2012-04-22 22:57:03 -0500
Processing by ImagesController#create as JSON
  Parameters: {"image"=>{}}
WARNING: Can't verify CSRF token authenticity
   (0.1ms)  begin transaction
  SQL (24.1ms)  INSERT INTO "images" ("created_at", "name", "updated_at") VALUES (?, ?,  ?)  [["created_at", Mon, 23 Apr 2012 03:57:03 UTC +00:00], ["name", nil], ["updated_at",   Mon, 23 Apr 2012 03:57:03 UTC +00:00]]
   (46.0ms)  commit transaction
Completed 201 Created in 76ms (Views: 1.9ms | ActiveRecord: 70.2ms)
var data = '{ image: { name: "noway" } }';
var data = JSON.stringify({ image: { name: "noway" } });
Started POST "/images.json" for 192.168.1.139 at 2012-04-23 17:54:58 -0500
Processing by ImagesController#create as JSON
  Parameters: {"image"=>{"name"=>"noway"}}
WARNING: Can't verify CSRF token authenticity
   (0.1ms)  begin transaction
  SQL (1.1ms)  INSERT INTO "images" ("created_at", "name", "updated_at") VALUES (?, ?, ?)  [["created_at", Mon, 23 Apr 2012 22:54:58 UTC +00:00], ["name", "noway"], ["updated_at",   Mon, 23 Apr 2012 22:54:58 UTC +00:00]]
   (45.8ms)  commit transaction
Completed 201 Created in 51ms (Views: 1.4ms | ActiveRecord: 47.0ms)