当前位置: 首页 > 知识库问答 >
问题:

我无法设置值或从通过Ajax创建的select元素中获取值

公孙辰龙
2023-03-14

我创建了“Omarkasec”作为一个函数,通过ajax从数据库中获取汽车品牌,并通过ajax在select元素中添加了这个汽车品牌作为选项-->success。但是我不能在这个select元素中设置一个值。

我尝试了设置值的以下代码:

  1. $('select[name=marka]').val('lada');
  2. $('select[name=marka]option[value=lada]').prop('select',true);
  3. $('select[name=marka]option[value=lada]').attr('select','select');

这些密码不管用。但如果我加上alert(“”);在“Omarkasec”函数中,代码起作用,如果我删除alert(“”);密码不起作用。

<div id="marka" class="gizle" >
   Marka: <br>
   <select name="marka" onchange="omodelsec()" size="10" ></select>
</div>

<script language='javascript' type='text/javascript'>
    function omarkasec() {
        $.ajax({
            type: "POST",
            url: "aracsor.php",
            dataType: "json",
            data: {
                otomobilmodelyili : $("select[name=modelyili]").val(), //This work, because i created php.
            },
            success: function(donen){
                $("#marka").removeClass("gizle");
                $("#model").addClass("gizle");
                $("#yakit").addClass("gizle");
                $("#sanziman").addClass("gizle");
                $("#cekis").addClass("gizle");
                $("#kasatipi").addClass("gizle");
                $("select[name=marka]").empty();
                $.each(donen, function (index, otomarka) {
                    $("select[name=marka]").append($("<option>", {
                        text : otomarka,
                        value  : otomarka,
                    }));
                });
            },
        });
     //if I add here alert(""); The following code works.
    }
    </script>

<script language='javascript' type='text/javascript'>
   omarkasec();
   $('select[name=marka]').val('Lada');
   alert($('select[name=marka]').val()); //if I add alert(""); this code work but if I remove alert(""); this code get null value.
</script>

共有1个答案

魏臻
2023-03-14

Ajax调用是异步的。您的代码执行$.ajax()调用,并向其传递一个回调函数,但该回调函数并没有在此时执行。

执行过程立即在$.ajax()之后执行语句,但此时内容尚未加载。

但是,如果您执行alert(),则可能会在警报对话框打开时最终触发回调,从而通过回调函数加载内容。如果然后关闭弹出窗口,后面的任何代码都将发现内容在那里。

解决此问题的一种方法是使用$.ajax调用的返回值(这是一个承诺),并将一个then调用链接到它:

function omarkasec(oncomplete) {
    return $.ajax({
//  ^^^^^^
        type: "POST",
        url: "aracsor.php",
        dataType: "json",
        data: {
            otomobilmodelyili : $("select[name=modelyili]").val(),
        },
        success: function(donen){
            $("#marka").removeClass("gizle");
            $("#model").addClass("gizle");
            $("#yakit").addClass("gizle");
            $("#sanziman").addClass("gizle");
            $("#cekis").addClass("gizle");
            $("#kasatipi").addClass("gizle");
            $("select[name=marka]").empty();
            $.each(donen, function (index, otomarka) {
                $("select[name=marka]").append($("<option>", {
                    text : otomarka,
                    value  : otomarka,
                }));
            });
        },
    });
}

// provide (anonymous) callback function to the `then` method: 
omarkasec.then(function () {
     // this code will only be executed when content is loaded:
     $('select[name=marka]').val('Lada');
     alert($('select[name=marka]').val());
});
 类似资料:
  • HTML部分: 下面是我正在尝试的Xpath: 但是得到例外: 无效的选择器:由于以下错误,无法找到 xpath 表达式为 //li[文本()=//li[. = 'admin'] 的元素: 语法错误:未能对“Document”执行“evaluate”:字符串“//li[text()=//li[。= 'admin']'不是有效的XPath表达式。 精确查看UI和超文本标记语言代码: 该字段会自动完成

  • 问题内容: 我目前正在使用python 3.6.5,selenium版本3.14.0 如果我创建了如下所示的网络元素: 我无法使用以下内容: 我已经仔细检查过是否成功创建了该元素,但是使用selenium包提供的API(例如find_element_by_id和上面的脚本)无法找到该元素。 问题:在execute_script之后注入新元素之后,我还需要做其他事情吗?还是目前,这不可能吗? 我可以

  • 我读了“如何从数据帧的单元格中获取值?”以及“如何选择数据框的最后一列”。我有点困惑,什么是2018年接受的方法从熊猫数据帧的单元格获取值,因为已被弃用,并且在上的留档有点稀疏。我想按标签选择行,按位置/整数选择列。下面我使用的方法是2018年公认的方法吗?我有这个代码: 它生成一个字符串如下所示: 通过函数将其转换为数据帧,如下所示: 它是行的最后一列的值(整数1),标签为,我对此感兴趣。这是2

  • 问题内容: 我正在尝试通过angularjs在html中查找元素。 这是html: 我试图通过类名多文件来获取按钮元素,然后我尝试 但是它不起作用,并且尝试过,但仅对标签起作用。 在angularjs中,有没有可以通过ID或类名获取元素的函数? 问题答案: 是DOM文档上的函数。它既不是jQuery也不是jqLit​​e函数。 使用时不要在类名前添加句号: 将其包装在jqLit​​e中(如果在An

  • 嗨,我一直在到处寻找一个非常简单的解释,如何通过xPath找到一个元素。 我想要的只是一种简单的方法来寻找一个元素,但是我想要找到的所有帮助都需要一个。这对我不管用。以下是我想做的: 加载URL 这是我的代码: 当我执行 我得到未定义时,我做 有没有更简单的方法来获取元素?也许是。。。。

  • 问题内容: 我的设置如下: 值是 该工作正常。但是我不知道如何设置选择值。当我尝试将模型设置为的值之一时,不会被设置。 问题答案: 该文档不是明确的,但是您应该使用。我创建了一个代码笔来说明,但是基本上是: 这将选择第二个类别(类别数组中的索引1)。