【问题标题】:make two parallel ajax calls with tokeninput使用 tokeninput 进行两个并行 ajax 调用
【发布时间】:2014-12-14 07:13:47
【问题描述】:

我一直在尝试 tokeninput 。它就像一个魅力。但最近我偶然发现了一个要求,即在同一个输入栏上进行两次 ajax 调用。

场景:我的输入栏

<input id="autocompleteMe" >

我通过以下方式初始化tokeninput 插件:

$("#autocompleteMe").tokeninput(
"mysite/LookUp.php?callFrom=FromFile",
{
 theme : "facebook",
 propertyToSearch : "myProp"
}
);

这可以正常工作并获得结果并用结果填充我的下拉列表。

要求: 此结果来自我的 Server 上的文件。如果找到/未找到结果(在这两种情况下),我还需要在我的数据库中查找相同的输入,并提供建议。由于数据库可能已经更新。

即在用户输入时,应该触发两个 ajax 调用,它们是:

  1. 从文件中获取结果(我想尽快绑定 结果返回)
  2. 也从数据库中获取结果(这可能需要 时间 。并将在下拉列表中添加 检索)。

我的想法

$("#autocompleteMe").tokeninput(
"mysite/LookUp.php?callFrom=FromFile",
{
 theme : "facebook",
 propertyToSearch : "myProp",
 onResult : function(result){
  // bind the returned results here to the dropdown . Since they are from the file 
  // but how ?

  $.getJSON("mysite/LookUp.php",{callFrom : "DBCall"},function(DBResponse){
   // append the results to the dropdown .
   // also this will a async call . i will have attach the callback . I have no idea how to 
  });
 }
}
);

为这么愚蠢的问题道歉。但我一直在努力解决这个问题。 任何帮助都是有义务的。

感谢和问候!

【问题讨论】:

  • 这只是异步调用的问题还是别的什么?

标签: javascript jquery ajax jquery-tokeninput


【解决方案1】:

你在正确的道路上......

如果我没记错的话,你的 onResult 块应该是这样的

onResult : function(firstResultSet){
  var returningResults;
  $.getJSON("mysite/LookUp.php",{callFrom : "DBCall", firstResultSet: firstResultSet},function(DBResponse){
       returningResults = DBResponse;
   });
   return returningResults; 
}

重点是,你可以在 onResult 回调中做任何你想做的事情,并且在你操作了你的数据之后,你返回它。

【讨论】:

  • 哦,抱歉,我没有看到您两次发出完全相同的调用...没有必要,只是想包含它,以便您了解哪个变量有什么存放在里面...
  • 感谢您的及时回复!但是我没有将“firstResultSet”发送到我的数据库调用逻辑的逻辑? .同样根据您的逻辑(如果我没记错的话),用户将不得不等到从数据库中获取数据(这将是一个滞后)。我想要的是显示“firstResultSet”,直到 DBCall 在后端获取结果。如果有错误请纠正我。
  • 是的,它必须等待并产生滞后......但在我看来,你在这里采取了错误的方法。首先,如果用户搜索某些内容并且没有足够的结果(您的逻辑决定它应该查看数据库),用户将不会意识到这一点。这是不好的做法,因为用户可能会对您的输入建议的工作方式感到非常困惑。异步调用是你最好的选择。您的第二个最佳选择是进行一个返回来自两个来源的结果的后端调用...
  • 我理解@kosturko,但由于文件数据有热门搜索,我总是想从那里显示数据,同时也从数据库中获取其他记录(当然,两个结果都会分开通过“列表分隔符”,从而使用户知道什么数据是什么以及来自哪里)。此外,从数据库中获取的数据与 File 中的存在无关。正如我提到的,即使从文件中找到匹配的结果,逻辑仍然会命中 DB(或者更好的是从 DB 缓存的结果)以显示两个结果(由标记或分隔符划分)。
猜你喜欢
  • 2021-05-24
  • 2011-05-28
  • 2013-07-27
  • 2017-02-09
  • 2015-07-22
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多