我想将ajax请求的结果发回给它所请求的同一页面。以下是相互作用的部分:
Jquery中的AJAX
var ids = 1
$(document).ready(function(){
$('#showbtn').on('click', function() {
$.ajax({
url: "http://localhost:3000/teamplayers.json",
data: {'resolution':ids},
type:"post",
dataType: "json",
cache: true,
success:function(){
$('#test3').val(1);
alert("test 3");
},
error: function(error) {
alert("Failed " + console.log(error) + " " + error)
}
});
});
});
这应该在这里设置一个变量: Teamplayer Controller
# GET /teamplayers
# GET /teamplayers.json
def index
@teamplayers = Teamplayer.all
@fteams = Fteam.all
@teamplayer2 = 1
tid = params[:resolution] <-It should set here per the data section above
@ids = tid
end
不幸的是它调用了同一控制器的这一部分
# POST /teamplayers
# POST /teamplayers.json
def create
@teamplayer = Teamplayer.new(teamplayer_params)
respond_to do |format|
if @teamplayer.save
format.html { redirect_to @teamplayer, notice: 'Teamplayer was successfully created.' }
format.json { render action: 'show', status: :created, location: @teamplayer }
else
format.html { render action: 'new' }
format.json { render json: @teamplayer.errors, status: :unprocessable_entity }
end
end
end
那么我怎么做才能让它发布到同一页面。
答案 0 :(得分:0)
您正在POST
使用ajax,这意味着create
操作将被点击,而不是index
操作。当您点击页面时,您应该能够在服务器日志输出中看到这一点。
如果您想点击index
操作,则需要使用分辨率数据集执行GET
ajax请求,以便获取所需的数据。
此外,如果它实际上是动态数据,您可能不希望缓存此ajax请求,但这取决于您。
从评论中编辑:
您需要将参数添加为GET
的查询字符串,而不是通用“数据”。
尝试这样的事情:
$.ajax({
url: "http://localhost:3000/teamplayers.json?resolution="+ids,
type:"GET",
dataType: "json",
success:function(){
$('#test3').val(1);
alert("test 3");
},
error: function(error) {
alert("Failed " + console.log(error) + " " + error)
}
});
});
评论的另一个编辑:
# GET /teamplayers
# GET /teamplayers.json
def index
@teamplayers = Teamplayer.all
@fteams = Fteam.all
@teamplayer2 = 1
tid = params.fetch(:resolution) { 0 } # make sure we got something
@ids = tid.to_i # coerce string param to integer
end