我想使用jQuery将变量从我的表单发送到我的rails应用程序,这是可能的,目前我有下面的代码,并设置我的rails应用程序来获取然后插入数据库的参数。
我做错了什么?
var dataString = 'author='+ name + '&book=' + book + '&genre=' + genre;
$.ajax({
type: "POST",
url: "http://localhost:3000/books",
data: dataString,
success: function() {
$('#form').html("<div id='message'></div>");
$('#message').html("<h2>Book Submitted!</h2>")
.append("<p>You will be notified soon!</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});
由于
答案 0 :(得分:0)
尝试在查询中使用令牌。这是对XSS攻击的保护。
'authenticity_token': AUTH_TOKEN
例如:
var dataString = 'author='+ name + '&book=' + book + '&genre=' + genre + '&authenticity_token='+AUTH_TOKEN;
答案 1 :(得分:0)
如果您从另一个应用程序(Rails,HTML,PHP或其他)传递参数,那么问题可能是Rails期望您传递真实性令牌。由于您不能使用其中一个(因为您从另一个应用程序传递数据),您需要执行以下操作之一。
对于具体行动,请勿防止伪造:
protect_from_forgery :except => [:create, :update]
或者对于整个控制器:
skip_before_filter :verify_authenticity_token
答案 2 :(得分:0)
您的网址参数中的绝对路径引起了我的怀疑。
由于javascript's same origin policy,Ajax调用只能在服务页面的同一服务器上进行。
您的html页面是否也托管在http://localhost:3000上?如果不是那就是你的问题。
如果是,那么请查看有关真实性令牌的答案。
答案 3 :(得分:-1)
我认为你不需要jQuery从Rails应用程序中的表单传递参数。
通常,命令rails generate scaffold
生成用于编辑和创建新资源的视图。这些视图包含将参数传递给数据库而没有jQuery的表单。