【问题标题】:Incoming ajax data and "if" conditionals...?传入的ajax数据和“if”条件......?
【发布时间】:2019-07-03 00:07:51
【问题描述】:

对编码相当陌生,如果这是基本的,请见谅...

我正在开发一个 Web 应用程序,单击“搜索”按钮会触发一个 ajax 请求以获取一堆数据,然后使用 jQuery .DataTable 方法填充一个表。

我想要做的是让相同的搜索按钮单击事件在页面的单独部分显示一个或另一个链接,具体取决于返回的数据中的内容。

更具体地说,搜索点击事件检索“账单”或“倡议”的条目/行,并且单个搜索可能会检索两种类型的条目(如果给定数字存在两种类型,这是搜索条件)。表上没有显示指定条目是哪种类型的列,但该信息应该是从 ajax 调用返回的对象的一部分(我认为?);每个条目都有一个名为“request_type”的字段,其中“B”代表账单,“I”代表主动性。

如果用户搜索具有倡议条目的数字,我希望在不同 div 的表外弹出一个指向有关倡议信息的链接。如果该号码有账单条目,则应弹出不同的链接。如果两者都是,那么应该弹出两个链接 - 每个链接一个。

我明白,最终,我想要一个像这样的条件

if (???something saying initiatives and bills are in the returned data???) {

$('#url1Div').html("<a href='" + newURL1 + "' target='_blank'>View bill information</a>");

$('#url2Div').html("<a href='" + newURL2 + "' target='_blank'>View initiative information</a>");

} else if (???just initiatives?? {

$('#url2Div').html("<a href='" + newURL2 + "' target='_blank'>View initiative information</a>");

} else if (???just bills???) {

$('#url1Div').html("<a href='" + newURL1 + "' target='_blank'>View bill information</a>");

};

鉴于我正在尝试使用返回的数据表对象,我只是不知道这些条件应该是什么样子。

起初我试图从显示的表格标记的一列中读取信息,例如

var initiativeExists;

$('#table tr td:nth-child(3)').each(function () {
                            var texttocheck = this.innerText.trim();
                            if (texttocheck.includes("I")) {                            
                                initiativeExists = true;
                                return false;
                            } 
                            return false;
                        });

然后,我的条件句被设置为 if (initiativeExists) {//do the thing} 的某个版本。但是,直到表格已经填充,这才起作用,当我应该使用原始数据时,试图从标记中读取一些东西似乎很混乱。

苏……

我只是错过了一些等待数据返回的方法,然后执行检查以查看是否有任何条目属于“I”类型。

任何帮助表示赞赏,将尽我所能澄清。干杯

【问题讨论】:

    标签: javascript jquery ajax datatables


    【解决方案1】:

    尝试创建一个单独的 AJAX 请求来提取数据,这样您就可以执行所需的附加逻辑。然后将结果分配给一个变量,以便您可以将其传递给数据表,假设这与您使用的数据表库完全相同https://datatables.net/manual/data/

    希望这会有所帮助。

    【讨论】:

    • 我不确定您创建一个单独的 AJAX 请求的确切含义,但实际上,您鼓励我回到手册的开头确实提供了帮助!大声笑这确实是我使用的数据表库。
    【解决方案2】:

    我最终通过使用链接显示逻辑编写一个单独的回调函数来解决它,然后为 .DataTable() 使用“initComplete”选项。我在调用 ajax.reload() 的代码部分中使用了相同的回调函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多