Ajax 如果超过一个 @mention

2024-04-16

我正在尝试使用 jquery ajax php 制作一个 facebook 和 twitter 风格的提及系统,但如果我尝试@提及多个用户,我就会遇到问题。例如,如果我开始输入如下内容:

Hi @stack how are you. 

结果显示@stack,但如果我尝试像这样提及另一个用户:

Hi @stack how are you. i am @azzo

那么结果就什么都没有了。我缺少什么 ajax 代码,有人可以帮助我吗? 我认为搜索 user_name 存在正则表达式问题。当我在第一个用户名之后写一些用户名时@stack然后ajax请求发布这个:

f   : smen
menFriend   : @stack
posti   : 102

但是如果我想在同一个文本中标记我的另一个朋友,如下所示:

Hi @stack how are you. I am @a那么ajax请求看起来像这样:

f   : smen
menFriend   : @stack, @a
posti   : 102

所以我想说的是,显然,ajax 会询问所有以 @ 开头的单词。它需要做的是询问数据库中的最后一个@mention。

   var timer = null;
   var tagstart = /@/gi;
   var tagword = /@(\w+)/gi;
   $("body").delegate(".addComment", "keyup", function(e) {
    var value = e.target.value;
    var ID = e.target.id;
    clearTimeout(timer);
    timer = setTimeout(function() {
      var contents = value; 
      var goWord = contents.match(tagstart);
      var goname = contents.match(tagword); 
      var type = 'smen'; 
      var data = 'f=' +type+ '&menFriend=' +goname +'&posti='+ID;
      if (goWord.length > 0) { 
             if (goname.length > 0) { 
                $.ajax({
                type: "POST",
                url: requestUrl + "searchuser", 
                data: data,
                cache: false,
                beforeSend: function() {
                    // Do Something
                },
                success: function(response) { 
                    if(response){
                        $(".menlist"+ID).show().html(response);
                    }else{
                        $(".menlist"+ID).hide().empty();
                    }
                }
              });
         } 
      }  
    }, 500); 
  });

这里还有一个用于从数据库搜索用户的 php 部分:

   $searchmUser = mysqli_real_escape_string($this->db,$searchmUser);
   $searchmUser=str_replace("@","",$searchmUser);
   $searchmUser=str_replace(" ","%",$searchmUser);
   $sql_res=mysqli_query($this->db,"SELECT 
   user_name, user_id 
   FROM users WHERE 
   (user_name like '%$searchmUser%' 
   or user_fullname like '%$searchmUser%') ORDER BY user_id LIMIT 5") or die(mysqli_error($this->db));  
   while($row=mysqli_fetch_array($sql_res,MYSQLI_ASSOC)) {
           // Store the result into array
           $data[]=$row;
        }
        if(!empty($data)) {
           // Store the result into array
           return $data;
        }

看起来您正在发送一个数组,其结果是match你在AJAX请求中。

虽然我无法测试它,但您可以在正则表达式中使用前瞻并使用结果数组中的第一个元素。负前瞻(?!.*@\w)用于确保我们只匹配最后一个元素。

   var timer = null;
   var tagword = /@(\w+)(?!.*@\w)/;

   $("body").delegate(".addComment", "keyup", function(e) {
      var value = e.target.value;
      var ID = e.target.id;
      clearTimeout(timer);
      timer = setTimeout(function() {
         var contents = value;
         var type = 'smen'; 
         var goname = contents.match(tagword); 

         if (goname != undefined) {
            var data = 'f=' +type+ '&menFriend=' +goname[1] +'&posti='+ID;
            $.ajax({
               type: "POST",
               url: requestUrl + "searchuser",
               data: data,
               cache: false,
               beforeSend: function() {
                  // Do Something
               },
               success: function(response) {
                  if(response){
                     $(".menlist"+ID).show().html(response);
                  } else {
                     $(".menlist"+ID).hide().empty();
                  }
               }
            });
         }
      }, 500);
   });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ajax 如果超过一个 @mention 的相关文章

随机推荐

  • 即使在 .NET 4.5 中,ObservableCollection 也不是线程安全的?

    这几天我一直在用头撞虚拟墙 BindingOperations EnableSynchronization 方法似乎仅在 NET 4 5 中部分工作 我写了一个有时会失败的测试 object blah new object Applicat
  • Pycharm错误:无法确定模块类型(“WEB_MODULE”)

    我正在使用 Pycharm Professional 4 5 4 开发一个 javascript 项目 在浏览器中打开该项目时发现一些奇怪的行为 项目结构是这样的 MyProject data images python etc webap
  • 为什么不是 obj.style.left = "200px";在这段代码中工作?

    为什么不会 style top 200px 在这段代码中工作 使用以下方式调用元素内的事件oclick this style left 200px 也不行 div The Div div
  • 如何更改 php 错误电子邮件的主题?

    我有以下内容 error log big error 1 my email address 消息发送后 主题行中会显示 PHP error log message 有人可以告诉我如何自定义消息主题吗 error log Error mess
  • 如何在Python 3.6中安装Keras?

    我在安装 Python 3 6 的 Keras 库时遇到问题 每当我尝试安装 Keras 时 它都会抛出错误 当我在互联网上搜索时 Keras 已发布到 Python 3 5 有人有解决方案吗 如果您有 Anaconda 和 Python
  • 当启用删除、插入或更新操作时,LinqDataSource 不支持 Select 属性

    我在单击删除按钮 链接时收到此错误GridView控制 LinqDataSource DataSource 不支持 Select 属性 删除 插入或更新操作已启用 我真的不明白为什么会收到此错误 因为我已经在网站的不同网页上做了同样的事情
  • 键盘中断张量流运行并在此时保存

    有没有办法通过键盘中断来中断张量流会话 并可以选择在此时保存模型 我目前让会话运行过夜 但需要停止它 以便我可以释放内存供电脑在白天使用 随着训练的进行 每个时期都会变慢 因此有时我可能需要等待几个小时才能进行程序中的下一个计划保存 我想要
  • 为 android 4.0 或更高版本创建自定义锁屏?

    我想为 android 4 0 及以上版本创建自定义锁屏 我尝试使用小部件来创建锁屏 但它仅支持 android 4 2 还有其他方法可以创建自定义 Android 锁屏吗 几个月前我在互联网上的某个地方找到了一些片段 我做了一些更改 最近
  • openlayers 地图未在 vuejs 中显示

    以下代码片段是一个 vue 文件 它不会生成任何错误 但 openlayers 地图不会显示 我尝试了 openlayers 的两个 vue 插件 但似乎没有按照我的需要工作 在 vue 之外 代码可以工作 我使用 npm install
  • Google Sheets 数据透视表未更新

    我有一个谷歌应用程序脚本 它将信息提交到有组织的工作表 并希望创建一个包含工作表中所有信息的数据透视表 我可以这样做 但每当我向工作表提交新行数据时 它都不会自动包含在数据透视表中 每次提交新行数据时 我都必须手动更改数据透视表的范围 有什
  • Android:检测打开的键盘,onApplyWindowListener 不起作用

    我试图在键盘打开时隐藏布局底部的一个特定按钮 以便为用户提供更多视图 随着发布androidx core core ktx 1 5 0 alpha02谷歌 最后 添加了一个名为的方法insets isVisible WindowInsets
  • 如何访问在 Amazon ec2 上运行的 django 应用程序?

    所以 我查看了堆栈溢出 其他网站 但无法解决这个问题 因此发布这个问题 我最近开始学习 django 并且现在尝试在 ec2 上运行它 我有一个以下格式的 ec2 实例 ec2 xx xxx xx xxx us west 2 compute
  • 如何使用 Fitch 系统证明 ((p ⇒ q) ⇒ p) ⇒ p

    仅供参考 我使用的逻辑程序无法进行矛盾引入 这一点很可能是无关紧要的 因为我非常怀疑我是否需要使用任何形式的矛盾来证明这一点 在尝试解决这个问题时 我首先假设 p q p 它是否正确 如果是这样 接下来怎么办 如果解决方案看起来如此明显 请
  • “GONE”视图是否会损害性能?

    我正在制作一个应用程序 它可以节省我一些时间 多个活动有一个布局 其中一些视图设置为 GONE 消失 具体取决于正在使用的活动 我知道布局中包含大量视图可能会导致性能不佳 如果我有一个具有大量视图的活动 但其中很大一部分视图都消失了 那么该
  • 在 uiimageview 中加载大图像时的内存消耗

    我正在使用 UIViewContentModeScaleAspectFit 将大小为 2480 3508 的 UIImage 加载到 UIImageView 中 我在加载此图像时收到内存警告 当我在此 UIImageView 中加载一些此尺
  • 如何从列类型列表中的 pandas DataFrame 中删除空值

    只是期待一个从具有列表值的列中删除空值的解决方案 从某种意义上说 我们已经事先替换了一些字符串 它是列表的字符串表示形式的列 In df color我们只是更换 Blue带空字符串 示例数据框 df pd DataFrame Bird pa
  • Visual Studio 2012 Ultimate 新依赖图错误

    每次使用 Visual Studio 2012 Ultimate 创建新的依赖关系图时 我都会收到此错误 Unable to connect to the specified database An exception occurred a
  • 在Python中插入lxml树时出现属性错误

    我正在尝试将 xml 的小结构注入到现有 xml 文件中的特定位置
  • href 链接不可点击或不可突出显示

    我不完全确定为什么我的 a href 链接不起作用 在某个时间点它起作用了 我对 Z Index 做了一些研究 但这似乎不是问题 也不是我有一个重叠的 div 吗 请访问JSFIDDLE NET https jsfiddle net t9v
  • Ajax 如果超过一个 @mention

    我正在尝试使用 jquery ajax php 制作一个 facebook 和 twitter 风格的提及系统 但如果我尝试 提及多个用户 我就会遇到问题 例如 如果我开始输入如下内容 Hi stack how are you 结果显示 s