Jquery 承诺等待 ajax 结束

2023-12-06

我正在获取预定义值,我必须将其插入到两个选择中:

<div id="wrapper">
    <select id="first">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
    <select id="second"></select>
</div>

里面的选项#second取决于所选值#first。该选项通过 ajax 加载:

$('#first').change( function() {
        $.ajax({
            url: "giveMeValues.phpOrWhatever"
        }).done(function() {
            // just simulating data from ajax call
            $('#second').append(
                '<option value="a">a</option>'+
                '<option value="b">b</option>'+
                '<option value="c">c</option>'
            );
        });
    });

问题是,我可以设置值#second afterajax数据将被加载。所以下面的代码当然是行不通的:

$('#first').val('2').change();
$('#second').val('b').change();

所以我尝试使用.promise()等到ajax调用里面change处理程序将完成:

$('#first').val('2').change();
    $('#wrapper').promise().then( function() {
        $('#second').val('b');
        console.log('setting value...');
    });

但这不起作用。我的问题是:我如何等待ajax调用结束,然后设置#second value?

在这里你可以解决这个问题:http://jsfiddle.net/W2nVd/

谢谢你的时间。


您需要像这样设置 ajax 的承诺:

(function($) {
    // Our Ajax promise variable
    var promise;

    $('#first').change( function() {
        // Set the ajax promise variable
        promise = $.ajax({
            url: "#"
        }).done(function() {
            $('#second').append(
                '<option value="a">a</option>'+
                '<option value="b">b</option>'+
                '<option value="c">c</option>'
            );
            console.log('appending new content...');
        });
    });

    $('#first').val('2').change();
    // the var `promise` was set on the line above when it executed 
    // the `change()` callback
    promise.promise().done( function() {
        $('#second').val('b');
        console.log('setting value...');
    });

})(jQuery);

JSFiddle:http://jsfiddle.net/W2nVd/2/

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

Jquery 承诺等待 ajax 结束 的相关文章

随机推荐

  • 如何从不寻常的 JSON 存储创建 Ext.data.Store?

    我有这个 JSON 存储 但它的编码不正确 它的正确语法是什么 Ext define MA store Language extend Ext data Store fields name id name name data aa Afar
  • pthread_cond_wait:随机分段错误

    Update 3 最近 我注意到我的代码随机导致分段故障错误 但我认为到目前为止我的代码非常简单 我无法弄清楚该错误来自哪里 由于它是随机发生的 我假设存在某种竞争条件 我认为这就是可能相关的所有代码 如果您需要更多 请告诉我 namesp
  • 检查在线状态,例如通过 ping

    我正在使用 VB NET 为 Windows 10 IoT 开发通用 Windows 应用程序 我正在检查两件事 首先是是否有任何网络 我在用 Imports System Net NetworkInformation NetworkInt
  • 如何在不使用其父级的情况下设置 SimpleXmlElement 的文本值?

    我想设置 xpath 找到的某个节点的文本
  • Angular.js $resource 结果

    我发现 Angular resource 的行为非常奇怪 请检查以下代码行 class Service constructor resource gt service resource record id Service list cb g
  • malloc如何理解对齐?

    以下摘自here pw widget malloc sizeof widget 分配原始存储 事实上 malloc 调用分配存储空间 那足够大了并且适当对齐以固定物体类型的 小部件 另见快速实现他从赫伯 萨特那里说 结盟 任何内存对齐 任何
  • 忽略返回值语法?

    在 Matlab 中 tilda 符号可用于忽略返回多个参数的函数中的某个参数 但是 当我在 Octave 中尝试相同的代码时 出现语法错误 我有两个问题 为什么 Octave 不支持这个 即错误 未来的增强 设计决策等 Octave 中的
  • 使用 jackson-dataformat-xml 仅忽略 json 中的字段,而不忽略 xml 中的字段

    Using Jackson与jackson dataformat xml模块 我能够序列化POJO二者皆是JSON and XML 我的对象中有一些字段 xml 属性 只能序列化为XML但不是JSON 如果我应用 JsonIgnore注释
  • 如何访问HttpServletRequest中的POST参数?

    我有一个应用程序 它基本上是服务的代理 该应用程序本身基于 Jersey 构建并由 Jetty 提供服务 我有这个资源方法 POST Path default Timed Consumes application x www form ur
  • php绑定动态数量的变量进行批量插入查询

    我有一个网络服务 用户可以在其中提交动态数量的问题 在 php 方面 我使用explode 和 删除每个问题 然后我需要进行批量插入 到目前为止我所做的如下 checkInQs explode trim POST checkInQs che
  • 如何在 D3 旭日图中正确旋转文本标签

    在下面的 D3 旭日图中 http jsfiddle net maxl eabFC attr transform function d return rotate d x d dx 2 Math PI 2 Math PI 180 左象限中的
  • JSF 2.0 PrimeFaces 渲染器覆盖

    我正在尝试扩展一些 primefaces 组件渲染器类以进行相同的更改 我在 faces 配置中注册新渲染器
  • 如何获取英语单词数据库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我需要一个包含每个有效英语单词的数据库 我检查了 usr share dict words文件 它包含少于 100k 字 维基百科说英语有 475k 个单词 我在哪里可以获得完整的列
  • 如何将 Java 程序转换为 .exe 文件?

    如果我有 Java 源文件 java 或类文件 class 如何将其转换为 exe 文件 我的程序还需要一个安装程序 java打包器 Java Packager 工具编译 打包并准备 Java 和 JavaFX 应用程序以供分发 javap
  • 需要关于随机函数 swift 的解释

    关于我的随机函数有一个问题 为什么会出现此错误 4294967295 is not exactly representable as Float it becomes 4294967296 我的代码是 func random gt CGFl
  • isMemberOfClass 的用法;返回错误

    在下面的代码中 我认为第二个条件为真 但结果为假 我错过了什么吗 请帮助我理解 NSArray array NSArray alloc init NSLog NSStringFromClass array class if array is
  • 无法捕获任务 android studio 的输入文件的快照

    我正在尝试制作 android studio 项目 我在 Android 设备管理器中运行项目没问题 但是当我尝试在真实设备上运行时出现一些错误 Error Failed to capture snapshot of input files
  • 与后面的视图控制器交互

    我知道 SE 上有几个与此问题相关的帖子 但我无法绕过它们来找到适合我的情况的正确解决方案 我在视图控制器中有一个地图视图 我正在展示另一个视图控制器modalPresentationStyle set as custom 容纳卡片视图 在
  • 播放保存在应用程序文档目录中的视频文件

    我有一个视频文件保存在我的应用程序的文档文件夹中的本地目录中 我想在用户单击我创建的嵌入表格视图中的项目时播放该文件 我的播放视频的代码如下 NSString documentPath NSSearchPathForDirectoriesI
  • Jquery 承诺等待 ajax 结束

    我正在获取预定义值 我必须将其插入到两个选择中 div div