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没有被称为”堆栈:“错误:jQuery211019731531548313797_1401196032110未被调用在Function.n.extend.error(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min .js:2:1821)↵at h.jsonp.b.dataTypes。(anonymous function).b.converters.script json(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery .min.js:4:16293)at在v(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:7397)在x(https:/ /ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:10802)↵在HTMLScriptElement.n.prop.on.c(https://ajax.googleapis.com/ajax /libs/jquery/2.1.1/jquery.min.js:4:15583)↵在HTMLScriptElement.n.event.dispatch(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery .min.js:3:6404)↵at HTMLScriptElement.r.handle(https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:3:3179)“


阿贾克斯

你需要知道的关于$.ajax - 当你使用error回调时,它是由你的Ajax触发一个实际的错误引起的。 我曾经认为这是如果你的应用程序返回一个错误 - 这是错误的:

  • success: {}每次您的ajax点击URL并提交请求
  • error: {}是每次您的ajax无法正确地击中URL
  • 这意味着如果错误出现在您的控制器中,我相信它会返回来自您的控制器的success回调


    固定

    对于你,我会推荐这个:

  • 确定你的ajax是正确的url (你没有在你的代码中详细说明url
  • 确保你已经在你的JavaScript application js中包含了jquery
  • 使用一种方法来捕获从你的ajax返回的error
  • 尝试使用json
  • 您可能希望将您的ajax更改为:

    $.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");
               }
          }
    });
    

    这将允许您正确捕获错误响应,让您能够正确显示错误。 你可以通过看这个来做到这一点:


    如果你给我一些工作,我会处在一个更好的位置来帮助你!

    链接地址: http://www.djcxy.com/p/28653.html

    上一篇: AJAX operation does its work, but always get error

    下一篇: Zend Framework autocomplete