如何使用 jQuery 单击事件基于 JSON 查询异步更改 href 值

2023-12-07

我正在使用bit.ly 网址缩短服务缩短发送到“在 Twitter 上分享”功能的某些 URL。我想仅在用户实际按下共享按钮时加载 bit.ly url(由于 bit.ly 的最多 5 个并行请求限制)。Bit.ly 的 REST API返回带有缩短的 url 的 JSON 回调,这使得整个场景异步。

我已尝试以下方法来停止单击事件,并等待 JSON 调用返回值,然后再启动单击。

我在 jQuery(document).ready() 中有以下简化代码:

更新了代码(过于简化)!

jQuery("#idofaelement").click(function(event) {
    event.preventDefault(); //stop the click action
    var link = jQuery(this);
    bitlyJSON(function(shortUrl) {
        link.attr("href", function() {
          //process shortUrl
          //return finalized url;                   
        }).unbind().click();
    });
});

下面的代码可以处理稍微缩短的情况(效果很好):

function bitlyJSON(func) {
//
// build apiUrl here
//
jQuery.getJSON(apiUrl, function(data) {
    jQuery.each(data, function(i, entry) {
        if (i == "errorCode") {
            if (entry != "0") {
                func(longUrl);}
        } else if (i == "results") {
            func(entry[longUrl].shortUrl);}
    });
});  
} (jQuery)

href 的值发生了变化,但最终的 .click() 事件永远不会被触发。在为 href 定义静态值时,这可以正常工作,但在使用异步 JSON 方法时则不行。


正如您概述自己:

event.preventDefault(); //stop the click action

这意味着,浏览器不会访问该 URL,如果您希望实际转到长网址位置,只需执行以下操作:

document.location.href = longurl;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 jQuery 单击事件基于 JSON 查询异步更改 href 值 的相关文章

  • 在自动完成上添加 jQuery 延迟

    我正在尝试为应用程序创建 jQuery 自动完成 search input on keyup function search this val autocomplete div autocomplete get ajax search se
  • 使用 Jquery 传递隐藏字段值

    我有一个正常的hidden Input field我在哪里生成random string 我需要将其附加到我尝试将数据发布到另一个页面的 URL 中 我已经做到了这一点并且效果很好 url Upload html field1 newval
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • 为什么函数声明在不同浏览器中的处理方式不同?

    虽然我在谷歌中找不到对此的引用 但我熟悉这样一个事实 在 javascript 中 全局函数声明在执行任何代码之前都会被解释 换句话说 这工作得很好 f function f 但是 我注意到 chrome 和 firefox 对全局函数声明
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • 非法使用break语句; javascript

    当这个变量达到一定数量时 我希望循环停止 但我不断收到错误 未捕获的语法错误 非法的中断语句 function loop if isPlaying jet1 draw drawAllEnemies requestAnimFrame loop
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • 引用自身的 Javascript 对象...有问题吗?

    由于 Javascript 允许通过引用分配复合值 因此如果 Javascript 对象引用自身 它将创建无限的引用集 如控制台中所示 这看起来像是某种无限循环 但 Chrome 似乎没有问题 这样做是否存在任何内存问题或其他风险 就记忆力
  • 使用 Express.js 和 NodeJS,您可以通过响应正文中的重定向发送 JSON

    我正在尝试通过 302 重定向发送 JSON 在 ExpressJS 中这可能吗 API 声明可以添加主体res json 例如 res json 302 name larry 在接收端 重定向的目的地 主体是空的 这是一些示例代码 发送应
  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • 如果选中复选框则显示 div

    我正在尝试构建类似 WordPress 选项的东西 用于在创建文章时切换字段可见性 我所构建的依赖于 click函数使用相应的字段名称切换父项 我想知道如果选中该复选框 执行此操作的最佳方法是什么 因为如果您选中一个框并重新加载页面 因为它
  • 意外的令牌:尝试解析 JSON 字符串时

    我正在尝试解析这个 JSON 字符串 RESULTS name Thessaloniki GR type Sailing l sailing weather beach Porto 20Carras 20Marina 45904 name
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 如何使用 javascript 更改文件扩展名

    有谁知道在 Javascript 中更改文件扩展名的简单方法吗 例如 我有一个带有 first docx 的变量 但我需要将其更改为 first html 这将改变字符串包含文件名 let file first docx file file
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • 如何获取符号名称(文字)?

    以下情况 var myVehicle brand Tesla var isMoving Symbol var currentStatus Symbol myVehicle isMoving true myVehicle currentSta
  • 使圆圈与 d3.js 上的多线匹配相同的颜色过滤?

    我有一个多线图 当按每种水果过滤时会更新 每条线条颜色对应不同的销售年份 在 的帮助下Shashank https stackoverflow com users 5569282 shashank 每个数据点线上的圆圈已添加到组中 而不是直
  • 如何通过点击复制 folium 地图上的标记位置?

    I am able to print the location of a given marker on the map using folium plugins MousePosition class GeoMap def update
  • 为什么 try catch 块没有捕获 Promise 异常?

    我对承诺的错误处理感到困惑 答案可能很明显 但我不明白 我有以下示例代码 var test async function throw new Error Just another error try test then catch err

随机推荐

  • 用户输入

    在Python中获取用户输入是一个非常基本的疑问 Python是否将任何输入作为字符串并使用它进行计算 我们必须将其更改为整数还是什么 在下面的代码中 a raw input Enter the first no b raw input E
  • 禁用和启用 jQuery 上下文菜单

    I use test unbind click 删除 test 项目上的点击事件 如何使该项目再次可点击 其实我有一张桌子 单击事件时会出现上下文菜单 但如果没有条目 则必须禁用菜单 所以我使用上面的unbind 由于上下文菜单是由插件生成
  • 即使主安装程序没有管理员权限,也可以在 Inno Setup 中执行安装后程序(子安装程序)

    就像在这个问题 我正在尝试实现一个安装程序 该安装程序在安装结束时启动另一个第 3 方驱动程序安装程序 这是通过使用管理权限运行我的安装程序来实现的 如果未指定 则为默认权限 Setup PrivilegesRequired admin 然
  • MySQL 累积产品组

    我一直在使用 WRDS CRSP 数据集 由宾夕法尼亚大学维护的用于学术研究的股票价格数据库 我一直在用 Python 下载数据并将其插入到我本地的 MySQL 数据库中 数据如下所示 主键为 quote date security id
  • Intellij IDEA Maven 导入问题

    我想切换到 IntelliJ 进行 forge modding minecraft 当我按照他们在互联网上所说的去做时 我收到一个 Maven 错误 Unindexed remote maven repositories found Dis
  • 使用ajax获取变量中的另一个页面的内容

    有没有办法将 javascript 变量设置为另一个 HTML 页面的内容 I tried var X http www website com home html 但它没有返回任何东西 即使它解释了这个想法 所以 有人可以告诉我该怎么做吗
  • Apps 脚本 - Web 应用程序:可见源代码/库?

    如果我将一个项目发布为公共网络应用程序 仅接收和响应几个变量 那么完整的源代码以及可能使用的库对所有用户可见 不 发布应用程序和文件共享是两件不同的事情 您可以将 Apps 脚本应用程序发布为有权访问该 Web 应用程序的 任何人 甚至匿名
  • Selenium Web-Driver Firefox 配置文件 - 禁用弹出窗口和警报窗口

    我在访问某些网站时遇到问题 当我尝试切换到其他 URL 甚至关闭浏览器时 浏览器会提示警报 一些例子 http groovshark com http www dollardays com 为了使用 Selenium 解决该警报 我需要切换
  • 如何检查变量是否不为空?

    我知道下面是 JavaScript 中检查变量是否不存在的两种方法null 但我很困惑哪个是最佳实践 我应该这样做 if myVar or if myVar null 它们并不等同 第一个将执行下面的块if声明如果myVar is trut
  • 创建特定值连续运行的计数器

    我的数据中连续的零值被非零值的运行分隔开 我想为 SOG 列中的零运行创建一个计数器 对于 SOG 中的第一个 0 序列 将 Stops 列中的计数器设置为 1 对于第二个零序列 将 Stops 设置为 2 依此类推 SOG Stops 4
  • 仅允许特定字符集的正则表达式

    我需要一些帮助来创建一个正则表达式来解析文本框中的字符串 我目前有这两个 javascript 方法 function removeIllegalCharacters word return word replace a zA Z 0 9
  • 在linux中如何加入2个文件

    我有 2 个文件 file A 和 file B 文件 file A 包含文件名 然后是空格后的代码行 该代码行可以有随机类型的字符 例如空格 等 它看起来像这样 请注意 文件中的代码行没有被 包围 这仅用于说明目的 bash 猫文件 A
  • django Rest Framework - 用于创建 m2m 关系的序列化器

    我在用django restframework对于我的 API 我创建了一个序列化器 它应该列出我的对象并且应该能够创建它们 我有一个Contact实体和Product 之间有一个标准的m2mlikes 这是我的模型 class Conta
  • 在传播缓存行时,内存控制器如何保证原子的内存顺序?

    我目前正在深入研究std atomics和C 内存模型 真正对我的思维模型有帮助的是 CPU 的存储和加载缓冲区的概念 它基本上是一个 fifo 队列 用于存储必须写入 L1 缓存或从 L1 缓存读取的数据 至少在英特尔架构中存在 据我所知
  • 如果用户在显示通知时尝试授予权限,则会出现 Android“检测到屏幕覆盖”消息

    我在 Nexus 6 上安装了 Android Marshmallow 我正在尝试解决以下问题 如果用户在显示通知时尝试授予权限 则会显示 检测到屏幕覆盖 消息 并且请求权限对话框消失 当然 应用程序不会获得请求的权限 查看截图 我尝试通过
  • Apache Beam 管道中的连续状态

    我正在为数据流运行器开发光束管道 我的用例中需要以下功能 从 Kafka 主题读取输入事件 每个Kafka消息值都派生 userID Event pair For each userID I need to maintain a profi
  • sphinx 可以忽略 python 文档字符串中的某些标签吗?

    我正在使用 sphinx 记录我的项目 并使用 sphinxcontrib napoleon 扩展 它允许我使用谷歌风格的文档字符串 这是我的项目中的一个函数 def nn normalized weight normweight fn q
  • 如何将十六进制字符串转换为十进制?

    如果您能告诉我如何转换十六进制字母 我将不胜感激NSString e g 50A6C2 使用 Objective C 转换为小数 提前致谢 最简单的方法是使用NS扫描仪 具体方法scanHexInt or scanHexLongLong 另
  • 如何从晨星上抓取数据

    所以我对网络抓取世界还是个新手 到目前为止我只真正使用 beautifulsoup 从网站上抓取文本和图像 我想我应该尝试从图表上刮掉一些数据点来测试我的理解 但我对此有点困惑graph 在检查了我想要提取的数据的元素后 我看到了这一点 s
  • 如何使用 jQuery 单击事件基于 JSON 查询异步更改 href 值

    我正在使用bit ly 网址缩短服务缩短发送到 在 Twitter 上分享 功能的某些 URL 我想仅在用户实际按下共享按钮时加载 bit ly url 由于 bit ly 的最多 5 个并行请求限制 Bit ly 的 REST API返回