javascript 的 Jquery 参数替代方案

2024-02-09

我需要转换以下类型字典:

{'key1': ['value1'], 'key2': ['value1', 'value2']}

to key1=value1&key2=....

即发布数据表格。我在 chrome 扩展中执行此操作,上面的表单数据字典由以下方式返回:

chrome.webRequest.onBeforeRequest.addListener(function(details) {
      if(details.method=="POST")         // ajax call
      {
        message.postdata = details.requestBody.formData;
      }
      return {requestHeaders: details.requestHeaders};
 }, {urls: ["<all_urls>"],types: ["main_frame", "sub_frame"]}, ["blocking", "requestBody"]);

我记得使用同样的方法实现了JQuery $.params()功能。如何在 javascript 中完成同样的事情?


这是一个迷你 jquery 参数 API http://jsfiddle.net/bom09qjg/[小提琴]。

您可以通过使用它jqMini.param(obj);

如上面的小提琴所示,它提供了相同的 使用 jquery 的原始 $.param 函数输出。

注意:jqMini.param不处理传统的jquery 对象作为参数。

(function(w) {
    var app = {},
        class2type = {},
        toString = class2type.toString,
        r20 = /%20/g,
        rbracket = /\[\]$/;
    
    w.jqMini = app;
    
    app.type = function(obj) {
        if ( obj == null ) {
            return obj + "";
        }
        // Support: Android < 4.0, iOS < 6 (functionish RegExp)
        return typeof obj === "object" || typeof obj === "function" ?
            class2type[ toString.call(obj) ] || "object" :
        typeof obj;
    };
    
    app.isFunction = function(obj) {
        return app.type(obj) === "function";
    };
    
    app.buildParams = function(prefix, obj, add) {
        var name, key, value;
        
        if(Array.isArray(obj)) {
            for(var key in obj) {
                value = obj[key]
                if(rbracket.test(prefix))
                    add(prefix, value);
                else
                    app.buildParams(prefix + "[" + (typeof value === "object"? key: "") + "]", value, add );
            }
        } else if(app.type(obj) === 'object') {
            for(name in obj)
                app.buildParams(prefix + "[" + name + "]", obj[name], add);
        } else
            add(prefix, obj);
    };
    
    app.param = function(obj) {
        var prefix, key, value
        serialized = [],
            add = function(key, value) {
                value = app.isFunction(value)? value() : (value == null ? "" : value );
                serialized[serialized.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
            };
        
        if(Array.isArray(obj)) {
            for(key in obj) {
                value = obj[key];
                add(key, value);
            }
        } else {
            for(prefix in obj)
                app.buildParams(prefix, obj[prefix], add);
        }
        
        return serialized.join('&').replace(r20, '+');
    };
    
})(window);

var obj = {'key1': ['value1'], 'key2': ['value1', 'value2']};
console.log(jqMini.param(obj));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 的 Jquery 参数替代方案 的相关文章

  • 有没有模拟 Facebook 游览的 jQuery 插件?

    我指的是 Facebook 游览 可能使用开箱即用的 Facebook CSS 我已经知道这两个 http tympanus net codrops 2010 12 21 website tour http tympanus net cod
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • jQuery .val() 返回单选按钮的未定义

    我正在尝试获取 jQuery 中选中的单选按钮值 但它返回的值是 未定义 我搜索了这个问题的解决方案 但对我来说没有任何作用 我的 HTML 代码
  • 将 jquery-mobile 与 Webpack 结合使用

    我正在尝试使用 webpack 加载 jquery mobile 但到目前为止还没有运气 我知道 jquery mobile 依赖于 jquery ui 而 jquery ui 又依赖于 jquery 如何在 Webpack 中设置这样的场
  • 未捕获的引用错误:myFunction 未定义[重复]

    这个问题在这里已经有答案了 这到底是怎么回事 http jsfiddle net sVT54 http jsfiddle net sVT54
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • 如何在 d3 js 中突出显示从根到选定节点的路径?

    我使用 d3 js 创建了一棵树 现在我创建了一个下拉菜单 其中包含树中所有节点的列表 现在 从下拉菜单中选择一个节点时 我想突出显示从根到该特定节点的路径 这个怎么做 首先创建一个 flatten 函数 它将分层数据变成一个 n 数组 f
  • 创建 Cookie 时需要帮助

    我有一个名为yes和另一个名叫no
  • ElectronJS ReferenceError:导航器未定义

    我正在尝试在电子上制作自定义标题栏 但是当我启动我的应用程序时 我遇到了 ReferenceError 导航器未定义 问题 请帮忙 这是我的 main js 中的代码片段 My Codes https i stack imgur com c
  • 在 MVC Razor 中的 C# 和 Javascript 之间共享常量

    我想在服务器上的 C 和客户端上的 Javascript 中都使用字符串常量 我将常量封装在 C 类中 namespace MyModel public static class Constants public const string
  • 通过docker使用Selenium python库,Chrome报错无法启动:异常退出

    我正在尝试使用以下命令运行一些 python 脚本selenium我从基于 miniconda anaconda 的 docker 容器中获取了库 但我不断收到此错误 selenium common exceptions WebDriver
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • 加载另一个 JS 脚本后加载

    这是我的代码 very big js file lots of html stuff 问题是 这些是异步加载的 有没有办法等待第二个脚本直到第一个脚本加载 如果您使用 jQuery 有一个非常简单的方法可以通过获取脚本 https api
  • Fancybox 画廊组

    我正在使用 fancyboxhttp fancyapps com fancybox http fancyapps com fancybox 我的问题是 我可以将不同的资源组合在一起吗 我的意思是同一画廊 或 组 中带有内嵌或视频的图像 如果
  • 有没有非常轻的灯箱? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简

随机推荐

  • 比较同一目录中的文件

    我们有 20 个文件 名为file txt全部在一个目录中 file1 txt file2 txt file20 txt 在同一目录中 我们还有其他文件 我们需要忽略它们 someotherfile csv somemore txt etc
  • 无法连接到任何指定的 MySQL 主机

    问题就在这里 我正在尝试执行查询及其抛出和异常connection Open 奇怪的是 在同一个应用程序上我正在执行 选择 查询并且它工作正常 但是当我执行 更新 查询时 它会抛出 无法连接到任何指定的 MySQL 主机 错误 一直卡在这上
  • 如何在 nginx 中配置重定向到带有斜杠的 url?

    我想将不带斜杠的 URL 重定向到带尾部斜杠的路径 所以 一些 url to 一些网址 其余的 URL 例如 some url xml 某个网址 some url q v 一些网址 应该保持不变 我找到了这篇文章https www atea
  • Grails 自动重新加载新的控制器操作

    I ve 创建了新的 Grails 2 4 3 项目 created TestController set grails reload enabled true in BuildConfig groovy 运行应用程序grails relo
  • char 数组的问题 = char 数组

    I have char message1 100 char message2 100 当我尝试做的时候message1 message2 我收到错误 分配给类型时不兼容的类型 char 100 从类型 char 我有类似的功能 if sen
  • 用CSS按比例调整图像大小,可能吗?

    有没有办法用 CSS 调整图像大小并保持其比例 容器有固定的宽度和高度 div class container img class theimage src something div 我问的原因是因为布局可以改变 通过类从列表到图标 并且
  • 枚举对继承的支持

    我经常遇到这样的情况 我们创建一个作用于某些枚举的类 但后来我们派生并希望在不更改基类的情况下向枚举添加更多值 我在2009年就看到过这个问题 基枚举类继承 https stackoverflow com questions 644629
  • 使 XStream 忽略一个特定的私有变量

    我目前正在为其编写保存函数的类有一个小问题 我正在使用 XStream com thoughtworks xstream 通过 DOMDriver 将类序列化为 XML 该类看起来像这样 public class World private
  • 如何制作 ToolStripComboBox 来填充 ToolStrip 上的所有可用空间?

    ToolStripComboBox 放置在 ToolStripButton 后面 后面是另一个右对齐的工具条组合框 如何最好地将 ToolStripComboBox 设置为始终调整其长度以填充前后 ToolStripButton 之间的所有
  • Mapbox:仅当注释在屏幕上可见时才添加注释

    我将注释数据存储在 Firebase 的数据库中 我发现只要注释没有自定义视图 我就可以下载 10 000 个注释的数据并将这些注释添加到我的地图中 而不会出现太大的延迟 然而 对于我的应用程序 我需要使用自定义视图 每个注释视图都是由多个
  • 从 pandas 数据框中制作多个饼图(每一行一个)

    我有一个数据框 df 显示与各种业务类别相关的情绪 我的任务是创建饼图 显示每种业务类型的情绪百分比 因此 我需要在 matplotlib 中创建一个函数 该函数读取 Business 列 然后使用数据框中每行的每个情感类别构建饼图 我已经
  • Wear OS 和 iOS 配套应用程序之间的直接通信

    我目前有一个适用于 Android 和 iOS 智能手机的应用程序 我想将其引入 Wear OS 和 Watch OS 由于 Wear OS 智能手表也与 iOS 设备兼容 因此我正在寻找一种在 Watch OS 应用程序和 iOS 应用程
  • 在表格/班级之间共享信息[重复]

    这个问题在这里已经有答案了 我知道标题问题并不独特 并且有很多可用的消息 我打开一个线程的原因是我真的很难根据我的项目来理解这个问题 最近 我尝试启动 WinForm 以从 REST API 获取值 就像在 Form1 上进行开始测试一样
  • 使用 dplyr::percent_rank() 计算组内的百分位数排名

    假设我有以下数据 id grpvar1 grpvar2 value 1 1 3 7 6 2 1 2 4 3 1 5 2 对于每个id 我想计算percent rank of its value在由组合定义的组内grpvar1 and grp
  • Windows ODBC 驱动程序 - 检索的表情符号数据呈现为?

    重复线程注释 我已经针对这个问题提出了类似的问题 通过 ODBC 连接检索的表情符号数据显示为问号 https stackoverflow com questions 58943772 emoji data retrieved via od
  • 聚合函数和其他列

    SQL 查询是否可以返回一些普通列和一些聚合列 like Col A Col B SUM 5 6 7 您应该使用按语句分组 http www w3schools com sql sql groupby asp GROUP BY 语句用于 与
  • 恢复活动时防止多次打开对话框

    在我的 Android 应用程序中 为了询问用户是否要恢复当前游戏 我在主游戏活动中显示一个对话框 显示 您要恢复当前游戏吗 是 否 问题是 如果我在不回答对话的情况下多次恢复此活动 那么我会收到几个对话 一个个对话 这显然不是我的目标 我
  • 如何将 XPath 与 AS3 结合使用并获得仍然引用 XMLDocument 对象的结果?

    我正在将 XML 字符串解析为 XMLDocument 对象 我想使用 XPath 技术搜索特定节点XPathQuery execQuery 此函数返回新的 XML 对象 这意味着我需要将其转换为不同的 XMLDocument 对象并丢失引
  • 升级到 Grails 2.4.4 的问题

    从 Grails 2 4 3 升级到 2 4 4 后 启动 Grails 应用程序时不断出现错误 完整的错误可以在这里阅读 http pastebin com UXQ34JKD http pastebin com UXQ34JKD 2014
  • javascript 的 Jquery 参数替代方案

    我需要转换以下类型字典 key1 value1 key2 value1 value2 to key1 value1 key2 即发布数据表格 我在 chrome 扩展中执行此操作 上面的表单数据字典由以下方式返回 chrome webReq