使用jQuery将参数发送到rails app

时间:2011-01-27 19:37:35

标签: jquery ruby-on-rails ajax

我想使用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' />");
});

由于

4 个答案:

答案 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的表单。

这是一个很好的教程 http://railstutorial.org/chapters/a-demo-app#top