Javascript jQuery-ajax内部代码;“成功”;函数仅在放在第一位时起作用

Javascript jQuery-ajax内部代码;“成功”;函数仅在放在第一位时起作用,javascript,ajax,jquery,Javascript,Ajax,Jquery,我在使用Ajax时遇到了一些非常奇怪的行为。或者这很正常。我不知道。我对使用Ajax还很陌生 我的问题是,我正在进行一些Ajax调用(两个使用$.post(),一个使用标准的$Ajax()调用),它们似乎可以很好地返回数据,但success函数中的代码只以一种非常特殊的方式工作 我注意到,如果将某些事情放在执行的第一行,它们就会起作用;但为什么呢?这对我来说真的毫无意义。在这种情况下,我希望id为link_span的span能够动态更新,因为我的Ajax调用link并取消设备之间的链接。 (co

我在使用Ajax时遇到了一些非常奇怪的行为。或者这很正常。我不知道。我对使用Ajax还很陌生

我的问题是,我正在进行一些Ajax调用(两个使用
$.post()
,一个使用标准的
$Ajax()
调用),它们似乎可以很好地返回数据,但success函数中的代码只以一种非常特殊的方式工作

我注意到,如果将某些事情放在执行的第一行,它们就会起作用;但为什么呢?这对我来说真的毫无意义。在这种情况下,我希望id为link_span的span能够动态更新,因为我的Ajax调用link并取消设备之间的链接。 (correct_classes函数计算已链接的链接数,并将其添加到我已使窗口对象成为全局的link_计数器变量中)。
但是,由于span只想在相应的代码放在上面时更新,所以它有点没用

另一个问题是,
.ajaxComplete()
和其他此类事件处理程序并不总是被调用。例如,我试图通过使用
.ajaxComplete()
在ajax停止时关闭加载程序来显示和隐藏gif。但这只适用于我的一个调用,即标准的
$.ajax
调用

我真的很困惑

任何帮助都会很好,如果有什么我没有说清楚的,请让我澄清

下面是我所说的一小部分:

$.post( "<?php echo base_url(); ?>connections/ajax_link", datax).done(function( resp,status ) {

    $("#loader_overlay").css('display','none');
    display_confirmbox(); 
    resp=JSON.parse(resp);

    var str = resp['parent_selector'];
    var arr = mystr.toString().split("||");
    correct_classes(arr[1], resp);

    $( '#link_span' ).text( '( ' + window.link_counter + ' ) links found' ); //this doesnt work unless its on top
});

我真的不明白为什么它会抱怨这段代码,而它却似乎在工作。

我不确定是否理解您的问题。。。。但是如果使用3个异步ajax调用($.post或$.ajax是无关的$.post是调用$.ajax({type:“post”})的契约语法),则需要等待所有调用的完全加载以使用它们的响应

所以。。如果您的某个呼叫evalue窗口。link\u计数器您需要等待他的响应,然后再呼叫您发布的代码

对于等待完成加载,您可以在prev调用的success函数中调用

您知道,有一个属性是
$.post()
dataType,如果将其设置为
“json”
,则无需解析响应,因为Jquery为您执行此操作,此代码是无用的:

resp=JSON.parse(resp);
方法
.done()
调用调用是否成功,如果调用失败,
$.post()
有一个成功函数回调。使用它会更好,使用
.fail()
捕捉调用错误

请参阅有关$.post()的文档:


然而。。。具有此id的元素
#link_span
是由一个ajax调用生成的?

通过“在顶部”生成的,您的意思是作为处理程序函数中的第一条指令?是的。第一行,第一个执行。。。老实说,我不知道正确的术语是什么,然后可能
display_confirbox()
以任何方式干扰
$('link_span')
(可能是ajax调用?)不。display_confirbox只包含:$('.x1')。css('visibility','visible')$('.x2').css('visibility','visible');即便如此,如果有什么东西会干扰ajax调用,我该如何找到它呢?我一直在试图找到这方面的信息,但到目前为止运气不好。好吧,你应该在这条线上放置一个断点,然后检查在那个特定的时间发生了什么。这可能是一个JS错误在某一行之前,这将中断执行…所有的调用单独发生。我修改了ajax调用以使用成功回调而不是.done处理程序,并添加了json数据类型,但问题仍然存在。不知何故,jquery对我试图做的事情感到恼火,但其余的代码仍然有效。#link_span元素是在最初发生的另一个ajax调用中生成的。
resp=JSON.parse(resp);