2011-06-10 52 views
1

我正在使用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 

这是什么意思?

+0

您是否尝试过在从ajax调用中移除'dataType'属性时运行此操作? –

+0

为了从错误回调中获得一些有用的信息,试试这个,而不是: 错误:function(xhr,status,ex){msg =“”; if(xhr){msg =“readyState is”+ xhr.readyState +“。”; (例如){ msg + = ex.name +' - '+ } alert(“ERROR”+ msg); } – dgvid

+0

@John Kalberer - 它具有或不具有'dataType'属性。 – user502052

回答

1

How can I return explicitly a success or error response in my controller?

您可以通过使用HTTP状态代码做到这一点,200是成功和500服务器错误。 所以尝试使用像一些代码:

if @object 
    respond_to do |format| 
    format.js 
    end 
else 
    render :nothing => true, :status => 500 
end 
1

的SyntaxError异常与消息“无效的标签”可能表明,$就方法试图解析响应数据作为JavaScript或JSON,但随后遇到的东西该类型的语句不具有合法的响应。尝试将您的调用中的dataType字段暂时更改为“text”。看看是否让你超出这个错误,并允许你看到你真正从服务器回来的东西。

顺便说一句:

  1. docs for jQuery.ajax没有列出 “JS” 作为数据类型的有效论据。您可能需要“脚本”或者“json”或“jsonp”,而不是。
  2. 如果未设置dataType,并且我怀疑它是否无效,那么$ .ajax会尝试从响应的MIME类型中推断出该类型。

编辑:我应该也提到了 - 如果你正在使用萤火虫或等同的东西在运行,尝试使用Net标签来检查服务器响应。鉴于响应的MIME类型,它在语法上是否有效?如果不是,则需要更正来自服务器的响应,更正响应中设置的MIME类型,或更改$ .ajax调用中的dataType。

相关问题