AJAX操作可以正常工作,但始终会出错

时间:2014-05-27 10:44:14

标签: jquery ruby-on-rails ajax

我有以下AJAX:

$.ajax({
          url: url,
          data: {"url" : hangOutUrl, "participants" : params},
          dataType: 'jsonp',
          success: function(){
            console.log("Connected");
          },
          error: function(xhr, textStatus, error) {
          console.log("Impossible to connect");
          console.log(xhr.statusText);
          console.log(textStatus);
          console.log(error);
      }
        });

这是我控制器上的代码

def hangout_started

    #Get information from hangout using ajax and widget
    url = params[:url]
    participants = params[:participants].split(/-/)


    #Find users 
    caller1 = Kid.where(username: participants[0]).first
    caller2 = Kid.where(username: participants[1]).first

    #Set all users to busy
    caller1.set_busy_status!

    #Create REDIS row with user and URL 

    REDIS.sadd "hangout:#{caller2.id.to_s}", url
    REDIS.expire "hangout:#{caller2.id.to_s}", 60

    respond_to do |format|
        format.json { head :ok }
      end


  end

这项工作非常完美,除了我总是在我的控制台日志中“无法连接”。为什么我总是进入我的错误功能?

错误功能和浏览器控制台发布错误:

  

消息:“jQuery211019731531548313797_1401196032110未被调用”   stack:“错误:jQuery211019731531548313797_1401196032110未在函数.n.extend.error(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:2:1821)上调用↵在h.jsonp.b.dataTypes。(匿名函数).b.converters.script json({{3 }})↵at vc(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:16293)↵at x(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:7397)↵在HTMLScriptElement.n.prop.on.c(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:10802)↵在HTMLScriptElement.n.event.dispatch (https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:15583)↵在HTMLScriptElement.r.handle(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:3:6404)“

1 个答案:

答案 0 :(得分:2)

<强>的Ajax

您需要了解的有关$.ajax的信息 - 当您使用error回调时,这是由您的ajax遇到实际错误引起的。我以前认为如果你的应用程序返回错误 - 那是错误的:

  
      
  • success: {}是每次你的ajax点击URL&amp;提出请求
  •   每次你的ajax无法正确访问网址时,
  • error: {}
  •   

这意味着如果错误出现在你的控制器中,我相信它会从你的控制器回来success回来


<强>修正

对你而言,我建议你这样做:

  1. 确定您的ajax正在点击url(您的代码中没有详细url
  2. 请确保您在javascript jquery js
  3. 中加入了application
  4. 使用一种方法从error
  5. 中捕获返回的ajax
  6. 尝试使用json
  7. 您可能希望将ajax更改为this

    $.ajax({
         url: url,
         data: {"url" : hangOutUrl, "participants" : params},
         dataType: 'json',
         success: function(){
            console.log("Connected");
         },
         error: function(jqXHR,error, errorThrown) {  
               if(jqXHR.status&&jqXHR.status==400){
                    alert(jqXHR.responseText); 
               }else{
                   alert("Something went wrong");
               }
          }
    });
    

    这将允许您正确捕获错误响应,使您能够正确显示错误。你可以通过以下方式做到这一点:


    如果你给我一些工作,我会更好地帮助你!