我正在Rails上工作,并且有ajax post数据调用的问题。它正在工作,数据被输入到db中,但是SUCCESS函数不起作用,因为SUCCESS函数中的alert函数没有触发。
另外,我想在不刷新整个页面的情况下给我的帖子添加评论。
AJAX代码如下:
<script type="text/javascript">
$(document).ready(function () {
$('form').submit(function () {
$.ajax({
url: '/comments/create',
type: "POST",
dataType: 'json',
processData: false,
success: function (msg) {
alert(msg);
},
error: function (xhr, status) {
alert(xhr.error);
}
});
});
});
</script>
和控制器代码为:
def create
puts 'params', params.inspect
@post = Post.find(params[:post_id])
@comment = @post.comments.new(params[:comment])
respond_to do |format|
if @comment.save
format.html { redirect_to(@post, :notice => 'Thanks for comment.') }
format.json { render json => @post, :msg=>"comment oK" }
else
format.html { render :action => "new" }
format.json { render :xml => @comment.errors, :msg=>"comment oooK", :status => :unprocessable_entity }
end
end
end
这段代码可以很好地将数据发送到create函数,该函数将创建(post ?)条目到db。但是我想在"成功"时返回警报函数中的数据,但是成功函数中的警报不起作用,错误函数中的警报正在触发。
尝试:
$('form').submit(function()
{
var myForm = $('form').serialize();
$.ajax
({
url:'/comments/create',
type:"POST",
dataType:'json',
data: myForm,
processData:false,
success: function (msg)
{
alert(msg);
},
error: function (xhr, status)
{
alert(xhr.error);
}
});
});
如果这不起作用,请在AJAX请求中写下您通过网络发送的内容。使用Chrome控制台或Firebug检查并粘贴POST结果在这里