ruby on rails-在控制器中处理jQuery.ajax响应时出现问题



我使用的是RubyonRails 3.0.7和jQuery 1.6.1。我正试图使用jQuery $.ajax()语法实现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]

如何在控制器中显式返回成功错误响应


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

这是什么意思

我如何才能明确返回成功或者我的控制器出现错误响应?

您可以使用HTTP状态代码来完成此操作,200表示成功,500表示服务器错误。所以试着使用一些代码,比如:

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

带有消息"invalid label"的SyntaxError异常可能表明$.ajax方法试图将响应数据解析为JavaScript或JSON,但在响应中遇到了对该类型语法无效的内容。尝试将调用中的dataType字段更改为"text",只是暂时更改。看看这是否能让你超越这个错误,并让你看到你从服务器上实际得到的东西。

顺便说一下:

  1. jQuery.ajax的文档没有将"js"列为dataType的有效参数。您可能想要"script",或者"json"或"jsonp"
  2. 如果dataTypenot没有设置,并且我怀疑它是无效的,那么$.ajax会尝试从响应的MIME类型推断类型

编辑:我还应该提到——如果您运行的是Firebug或类似软件,请尝试使用Net选项卡检查服务器响应。给定响应的MIME类型,它在语法上有效吗?如果没有,则需要更正来自服务器的响应,更正响应上设置的MIME类型,或者更改$.ajax调用中的dataType。

相关内容

  • 没有找到相关文章

最新更新