[英]Send Javascript object to Rails controller
使用Rails 4和本机Javascript(香草)。
我有以下Ajax调用,该调用返回place
对象:
// place.js
function addPlace(place) {
console.log(JSON.stringify(place));
var xhr = new XMLHttpRequest();
xhr.open("POST", "<%= Rails.application.routes.url_helpers.places_path %>", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.setRequestHeader("X-CSRF-Token", CSRF.token());
xhr.send("place=" + JSON.stringify(place));
}
在console.log(JSON.stringify(place))
,我得到以下JSON:
{"name":"San Francisco","url":"https://maps.google.com/?q=San+Francisco,+CA,+USA&ftid=0x80859a6d00690021:0x4a501367f076adff","utc_offset":-480,"vicinity":"San Francisco","html_attributions":[]}
该参数被发送到Rails控制器:
# places_controller.rb
class PlacesController < ApplicationController
def create
abort params[:place].inspect
@place = Place.find_or_create_by(source_id: params[:source_id])
@place.save
head :ok
end
end
在abort params[:place].inspect
的行中,它没有显示整个负载,而是仅显示:
"{"name":"San Francisco","url":"https://maps.google.com/?q=San+Francisco,+CA,+USA"
该url
得到,因为的剥离&
在&ftid=0x80859a6d00690021:0x4a501367f076adff
。
问题
我应该如何正确地将Javascript对象(最好是Hash)传递给Rails控制器,以便可以将其正确保存在数据库中?
尝试:
encodeURIComponent(JSON.stringify(place))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.