2010-05-11 89 views
1

我遇到了JQuery Ajax调用问题。响应始终为空,因为回调函数在get_friends请求完成之前执行。有什么我失踪?提前致谢。JQuery get/ajax调用执行回调而无需等待响应

jQuery(document).ready(function($) { 
    $('#btn_update').click(function() { 

     url = '/get_friends/'; 
     $.get(url, {}, function(response){ 
      alert(response); 
     }); 
    }); 
}); 

回答

1

我的同事能够帮助我。我不得不添加“返回false”。在点击功能的末尾。

+1

呃......这是一个*提交*按钮。 – 2010-05-11 23:54:08

+0

在你的事件处理函数中使用下面的代码而不是'return false;'会更清洁/更好: 为你的函数添加一个参数,最好命名为* e *(for * event *)。然后在函数的开头调用'e.preventDefault();'。 这具有防止默认操作(常规表单提交等)的优点,即使代码中的某些内容出错并导致处理程序提前返回。 – ThiefMaster 2010-11-12 00:13:40

0

我没有看到任何会解释行为的东西。事实上,我复制并粘贴了该代码,并且只是更改了URL,并获得了预期的结果(在显示来自该调用的响应之前,它等待该呼叫完成)。所以不,你不会错过任何在那个代码,这个问题必须在别处。

OT(或许):你是否声明url作为包含此代码的作用域中的变量?否则,您将创建一个implicit global variable,这是一件坏事(tm)。 :-)但这并不能解释你所描述的行为。

0

您能指定$ .get的最后一个参数吗?它可以是$ .ajax的dataType值。尝试使用“文本”,看看你真的从服务器收到什么。然后,您可以更改为您真正需要的类型(请参阅http://api.jquery.com/jQuery.ajax/