我对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>
答案 0 :(得分:1)
答案 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);
}
});
}