jQuery无法更改SELECT元素的值

时间:2015-02-05 13:02:17

标签: jquery ajax

我对jquery有个奇怪的问题。我想更改select元素的数据但由于某种原因它不会改变它。有人知道为什么它不会改变吗?

这是代码:

function getData(){
    //$(document).ready(function() {
    $.ajax({
            url: "php/formData.php",
            success: function(data) {
                try {

                    var parsed = JSON.parse(data);
                    $(document).ready(function() {
                    $("#DATA0").val(parsed.name);
                });


                } catch(e) {
                    alert("Error: " + data);
                }
            },
            error: function(data) {
                bootbox.alert("Error: " + data.statusText);
            }
        });

}

HTML:

<select id="DATA0" class="form-control">
<option value="X"></option>
<option value="Data1">Some data</option>
<option value="Data 2">Some data</option>
</select>

3 个答案:

答案 0 :(得分:1)

您的代码未被调用,因为文档已经加载。您不需要将代码包装在dom中。只需使用:

$("#DATA0").val(parsed.name);

Demo

答案 1 :(得分:0)

您是否尝试过(暂时)创建另一个元素并查看是否已使用parsed.name的值填充它?我问,因为如果你得到像&#34; KKKK&#34;或类似的东西,它不匹配您的选择语句中的任何选项 - 所以我不确定任何会改变。 (因为现有项目都没有与您从ajax调用中返回的值相匹配的值。)

另一方面,如果你创建了一个文本框(ID为&#34; mytextbox&#34;),你可以尝试这样的事情:

$('#mytextbox').val(parsed.name);

答案 2 :(得分:0)

我认为您已经在页面达到就绪状态之前调用了getdata()函数,因此,当ajax进入其成功函数时,它没有#DATA0标记ID。因此,您可以使用以下代码:

function getData(){
$.ajax({
        url: "php/formData.php",
        success: function(data) {
            try {

                var parsed = JSON.parse(data);
                $("#DATA0 option[value="+parsed.name+"] ").prop("selected",true);


            } catch(e) {
                alert("Error: " + data);
            }
        },
        error: function(data) {
            bootbox.alert("Error: " + data.statusText);
        }
    });
}