jQuery AJAX POST to Rails 3.2.1 Params获胜'不起作用
jQuery AJAX POST to Rails 3.2.1 Params won't work
我正试图向我的rails控制器(items controller
中的make_suggestion
方法)发送AJAX请求。
我有以下javascript:
$.ajax({
url: "/items/make_suggestion", // pass to make_suggestions in recipes controller
type: "POST",
dataType: 'json',
data: parsed_data // a Javascript object/data hash
});
调试(params)打开后,我在params中看不到任何已解析的数据。
有人能指出出了什么问题吗?我如何通过激发AJAX在Rails中的params中创建符号?
更新
在我的控制器中,我有
def make_suggestion
respond_to do |format|
format.html
format.json { render :json => params }
end
end
我的ajax代码:
$.ajax({
url: "http://localhost:3000/items/make_suggestion", // I'm doing the proper routing later, since '/make_suggestion' routes to 'items/1/make_suggestion'
type: "POST",
dataType: 'json',
data: parsed_data,
success: function(returned_value){
if(returned_value)
alert('true');
$('.test').append(returned_value);
},
error: function(returned_value){
$('.test').html('<p>Error in AJAX request</p>');
alert('Not working');
}
});
我的解析数据如下:
参数:{"data1"=>{"position"=>"1","item_id"=>"item_1","to_do"=>"未知","selected"=>"false"},"data2"=>{"position"=>"2","item_id"=>"item_2","to_do"=>"未知"、"选定"=>"false"}、"data3"=>{"position"=>"3"、"item_id"=>"item_3"、"to_do"=>"unknown"、"selected"=>,"data4"=>{"position"=>"4","item_id"=>"item_4","to_do"=>"unknown","selected"=>"false"}、"data5"=>{"position"=>"5"、"item_id"=>"item_5","to_do"=>"未知","selected"=>"false"}
但当我转到/items/make_suggestion.json时,它只显示以下内容:
{"action":"make_suggestion","controller":"recipes","format":"json"}
您可以通过多种方式查看/跟踪参数
1) 跟踪rails日志文件tail -f log/development.log
,注意rails web服务器通常在启动后开始跟踪到控制台
2) 在浏览器中引发异常并查看调试输出
3) 使用浏览器中的javascript控制台(有些是内置的),也可以考虑使用Firebug插件的Firefox(使用"控制台")选项卡
跟踪轨道日志
向rails服务器发出的每个请求都将显示传递的所有参数,以及接收请求的控制器和操作以及生成的所有sql语句考虑将"awesome_print"gem添加到您的应用程序中,以获得更好的日志输出,一旦安装logger.ap params
,将为您提供可读性良好的输出
引发异常
不经常需要,但如果添加raise "ZOMG"
作为控制器操作的第一行,它将呈现html输出并显示所有传递的参数。这对于ajax调用来说几乎毫无用处
Javascript控制台
这将显示javascript发送到rails服务器的所有ajax请求和所有参数,以及返回的所有数据,非常有用的
Rails将javascript-ajax参数映射到ruby散列,这非常好,因为这些数据结构在浏览器中与在Rails中几乎完全相同,即
// javascript data structure
var parsed_data = {
foo: "FOO",
bar: "BAR",
person: {
first_name: "Joe",
last_name: "Smith"
}
}
使用awesome_print输出到日志会产生一个ruby散列,类似于
logger.ap params
{
:foo => "FOO",
:bar => "BAR",
:person => {
:first_name => "Joe",
:last_name => "Smith"
}
}
# access the data
params[:foo]
# => "FOO"
params[:person][:first_name]
# => "Joe"
您向控制器发布的数据不详细。看看我的例子:
$.ajax({
url:'/contact/new',
type:'get',
data:{object_param:{
first_name:'zainulmasadi',
last_name:'masadi ganteng',
phone_number:'089745674119541'}},
dataType:'json',
success:function(returned_value){
if(returned_value)
alert('true');
}
})
和我的控制器
def new
@contact = ContactPhone.create(params[:object_param])
if @contact.save
respond_to do |format|
format.html
format.json {render :json => @contact}
end
end
end
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- HTML5音频加载和播放获胜'我不能在iPad上工作
- facebook”;添加评论“;popup获胜'不要消失
- 导入jQuery脚本获胜'我不处理html文件
- 为什么获胜'这个半圆长不大
- JavaScript获胜't运行,但在jsFiddle中工作
- 自动提交获胜't运行
- ajax调用获胜't同步执行
- 每个$.,循环获胜't逐个迭代HTML元素
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- 为什么获胜'我的自定义功能工作
- 粒子获胜't加速
- Node.js req.params.locationid not grabbing ID
- ASP.Net AJAX$GetJson函数获胜'不要被处决
- 绝对链接/相对链接均未获胜't在菜单中工作
- PhoneGap读写文件获胜'不起作用
- jQuery/JS获胜't在表单验证后重定向
- 与params的onclick调用
- ng文件上传获胜't将jpg图像转换为png
- jQuery AJAX POST to Rails 3.2.1 Params获胜'不起作用