在Rails 3应用中使用jQuery-UJS进行远程link_to的解析器错误:我该如何调试?

前端之家收集整理的这篇文章主要介绍了在Rails 3应用中使用jQuery-UJS进行远程link_to的解析器错误:我该如何调试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Rails 3,remote_link:remote =>点击链接后,替换div的内容.真和jQuery.

到目前为止,我已经能够让控制器渲染正确的部分,同时使用200个HTTP代码进行响应.我设置了一些回调来找出问题的根源:

jQuery(function($) {
    $("#follow-link").bind("ajax:before",function() {
        console.log("ajax:before");
    });

    $("#follow-link").bind("ajax:success",function(data,status,xhr) {
        console.log("ajax:success");
    });

    $("#follow-link").bind("ajax:complete",function() {
        console.log("ajax:complete");
    });

    $("#follow-link").bind("ajax:error",function(xhr,error) {
        console.log("ajax:error");
        console.log(error);
    });
});

在触发之前和完成时,成功不成功,错误输出“parsererror”.当我检查Safari开发人员工具中的响应时,我得到的内容是一个简单的字符串.

为什么会引起恐慌?如何获取有关导致此错误的更多信息?

解决方法

我将提出一个答案,因为评论不允许任何格式.这是:在服务器端发生了一些事情,jQuery没有得到你的想法.以下是jQuery文档的摘录:

error(jqXHR,textStatus,
errorThrown)Function A function to be
called if the request fails. The
function receives three arguments: The
jqXHR (in jQuery 1.4.x,
XMLHttpRequest) object,a string
describing the type of error that
occurred and an optional exception
object,if one occurred. Possible
values for the second argument
(besides null) are “timeout”,“error”,
“abort”,and “parsererror”. When an
HTTP error occurs,errorThrown
receives the textual portion of the
HTTP status,such as “Not Found” or
“Internal Server Error.”

这意味着您的控制器可能会以预期数据以外的其他方式进行响应.在该控制器中,尝试:

Rails.logger.debug render_to_string(:partial => "followings/follow")

在任何情况下,检查您的日志,以确保您认为正在发生的事情正在发生.另外,写一个测试来验证这一点:

# controller spec... modify if using Test::Unit
it "sends cool javascript" do
  xhr.post :unfollow,:id => 83,:data-method => "delete"
  response.body should == "some known response"
end

好的,这是一个黑客,脆弱的规格,但它会做,直到你知道事情发生了什么.

一旦你得到这个工作,一切都会整齐地落到位.

猜你在找的jQuery相关文章