我正在使用Ruby on Rails 3.0.7和jQuery 1.6.1。我试图使用jQuery $.ajax()
语法来实现AJAX请求,并且我的回应有问题,总是触发错误回调。处理控制器中的jQuery.ajax响应时遇到问题
N.B.:路由器设置成功。
在控制器我有:
def test_method
...
respond_to do |format|
format.js
end
end
该请求的jQuery的AJAX代码是:
$('#test_html_css_id').bind('click', function() {
$.ajax({
type: "POST",
url: "<%= user_url(@user)%>/test_method",
data: "test_data=<%= @user.test_data.to_s %>",
dataType: 'js',
error: function(jqXHR){
alert("ERROR " + jqXHR);
},
success: function(jqXHR){
alert("SUCCESS " + jqXHR);
}
});
});
在关于click
事件它总是返回以下警报信息上面的例子:
ERROR [object Object]
我该如何返回expli citly a 成功或错误响应在我的控制器中?
BTW:我怎样才能从控制器返回一些数据,然后处理与在jQuery代码触发?
修订后@dgvid评论
使用jQuery代码这个
error: function(xhr, status, ex) {
var msg = "";
if (xhr) {
msg = "readyState is " + xhr.readyState + ". ";
}
if (ex) {
msg += ex.name + ' - ' + ex.message;
}
alert("ERROR " + msg); },
我得到以下警告消息:
ERROR readyState is 4. SyntaxError - invalid label
这是什么意思?
您是否尝试过在从ajax调用中移除'dataType'属性时运行此操作? –
为了从错误回调中获得一些有用的信息,试试这个,而不是: 错误:function(xhr,status,ex){msg =“”; if(xhr){msg =“readyState is”+ xhr.readyState +“。”; (例如){ msg + = ex.name +' - '+ } alert(“ERROR”+ msg); } – dgvid
@John Kalberer - 它具有或不具有'dataType'属性。 – user502052