Phonegap Ajax Post to Rails 3.2.2 获取 MultiJson::D ecodeError
Phonegap Ajax Post to Rails 3.2.2 gets MultiJson::DecodeError (756: unexpected token
我正在尝试从phonegap到rails 3.2.2脚手架做一个简单的帖子。我有一个简单的脚手架,由一个控制器 => 图像和一个字段 => t.string:name 组成。
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
来自 phonegap 应用程序的索引.html文件是:
<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<script type="text/javascript" charset="utf-8" src="cordova-1.6.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
function appReady(){
var ajax = new XMLHttpRequest();
var data = '{ image: { name: "noway" } }';
ajax.open("POST","http://<server>/images.json",true);
ajax.setRequestHeader("Content-type", "application/json")
ajax.send(data);
ajax.onreadystatechange=function(){
if(ajax.readyState==4 && (ajax.status==200)){
document.getElementById('main').innerHTML = ajax.responseText;
}
}
}
document.addEventListener("deviceready", appReady, false);
</script>
</head>
<body>
<h1>Hello World</h1>
<div id="main">
</div>
</body>
</html>
微砖控制台生成以下内容:
Started POST "/images.json" for 10.0.1.14 at 2012-04-22 22:32:58 -0500
Error occurred while parsing request parameters.
Contents:
MultiJson::DecodeError (756: unexpected token at '{ image: { name: "noway" } }'):
json (1.6.6) lib/json/common.rb:148:in `parse'
我认为这与我格式化 json 对象的方式有关,因为当我更改时:
var data = '{ image: { name: "noway" } }';
自:
var data = " ";
我得到:
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 数据?
我能够 POST 更改行:
var data = '{ image: { name: "noway" } }';
自:
var data = JSON.stringify({ image: { name: "noway" } });
使用 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)
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在PHP中使用$_POST获取Select元素值
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- Phonegap Ajax Post to Rails 3.2.2 获取 MultiJson::D ecodeError