jquery - Ajax请求 'overlapping'

标签 jquery mysql ajax

我使用 AJAX 和 JQuery 从 MySQL 数据库中提取数据,基本上使用以下内容:

function getCard(card, lineNr, linedisplay, type){

var textToWrite;    
var d = 'card='+card;


$.ajax({
        type: "POST",
        url: "getcard.php",
        data: d,
        success: function(theXML){

            cardname = $(theXML).find('card_name').text();
            pastline = $(theXML).find('past').text();
            presentline = $(theXML).find('present').text(); 
            futureline = $(theXML).find('future').text();   
            ...

        if(type=="past") textToWrite = pastline;
        else if (type=="present") textToWrite = presentline;
        else textToWrite = futureline;
        ...


        $("#"+lineNr).html(textToWrite); 
        $("#"+linedisplay).html(textToWrite);
        $('.fancybox').prop('title', cardname);
        }   

}); 
};      

这用于使用 getcard.php 从 MySQL 表调用数据(不确定您是否需要看到它 - 基本上它将表行中的数据放入 XML,

<card_name>{$row['card_name']}</card_name>
<past>{$row['past']}</past>
<present>{$row['present']}</present>
<future>{$row['future']}</future>, 

等)。

当点击卡片链接时,会出现一个 fancybox 弹出窗口,其中包含卡片数据(过去线等)和卡片名称作为 fancybox 标题。

除了一件事之外,所有这些都工作正常。卡名值的刷新速率与其他数据不同。也就是说,我点击的第二张卡的标题与我点击的第一张卡的标题相同 - 但显示在 div 中的其余新数据(过去线、现在线等)显示得很好,但是除非我疯狂地点击 fancybox 几次,cardname 才会刷新。

谢谢,我正在猜测一切的方法。

有什么方法可以让 AJAX 确保它拥有最新的数据并阻止其重叠吗?

最佳答案

看来你的卡片标题是一个 fancybox .prop,而卡片文本是由函数插入到 DOM 中的 html。如果无法测试您的代码,可能您只是将属性与 fancybox .prop 调用绑定(bind),并且 fancybox 需要由事件触发?也许用 jquery 的 on() 附加它,或者在 fancybox 中可能有一些东西(我不太熟悉它)?

关于jquery - Ajax请求 'overlapping',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22522235/

相关文章:

java - 无法创建表 'basque30.newreferral'(错误号 : 150)

javascript - 使用 jQuery 处理 'img' 点击事件并将 'alt' 属性插入文本框

jquery - 使用固定标题偏移 anchor 链接

javascript - 如何仅将CSS类应用于图像

php - 如何获取 SELECT OPTION 的选定值

Mysql查询没有使用任何键

javascript - 我的 script.js 和 mail.php 不匹配

javascript - 猴子补丁 XMLHTTPRequest.onreadystatechange

javascript - TypeError : $(. ..).autocomplete(...).data(...) 未定义

jquery - 悬停时延迟显示内联 block