jQuery: загрузка идентификатора из базы данных
Поэтому у меня есть много переключателей с одинаковыми именами, но разными идентификаторами, и я не хочу указывать одну из них при загрузке страницы. Идентификатор нужной кнопки сохраняется в базе данных. Я пробовал такое решение для фактического вызова ajax, но, увы, оно не сработало.
$.ajax({
type: "POST",
url: "load_config.php",
dataType: "json",
data: dataString,
success: function(data)
{
var buttonID = "#"+data.buttonID; // data.buttonID = "button5"
$(buttonID).attr("checked", true);
}
});
в то время как HTML-часть выполнена таким же образом, за исключением множества кнопок:
<input type="radio" id="button1" name="example" value="value1"/>
<input type="radio" id="button2" name="example" value="value2"/>
<input type="radio" id="button3" name="example" value="value3"/>
<input type="radio" id="button4" name="example" value="value4"/>
<input type="radio" id="button5" name="example" value="value5"/>
2 ответа
Дважды проверьте возвращение JSON, ваш общий подход верен, вы можете проверить его здесь: http://jsfiddle.net/nick_craver/KuK3Z/
Держу пари, что ваш data.buttonID
не совсем то, что вы думаете, или ваш код не работает внутри document.ready
, как это:
$(function() {
$.ajax({
type: "POST",
url: "load_config.php",
dataType: "json",
data: dataString,
success: function(data)
{
var buttonID = "#"+data.buttonID; // data.buttonID = "button5"
$(buttonID).attr("checked", true);
}
});
});
Если это не работает в document.ready
и ваш AJAX-вызов завершается до того, как ваши элементы будут готовы, $("#button5")
селектор не найдет ничего, чтобы проверить. В качестве альтернативы, и гораздо лучше, если вы можете просто сделать checked="checked"
внутри правильно <input />
когда вы рендерите страницу, и полностью исключите вызов AJAX.
Попробуйте проверить свой ответ данных:
$(function() {
$.ajax({
type: "POST",
url: "load_config.php",
dataType: "json",
data: dataString,
success: function(data)
{
alert(data['buttonID']);
}
});
});
Если не определено, проверьте ваш PHP или мое последнее решение, в противном случае попробуйте:
$(function() {
$.ajax({
type: "POST",
url: "load_config.php",
dataType: "json",
data: dataString,
success: function(data)
{
$("#"+data['buttonID']).attr("checked",true);
}
});
});
Однажды у меня возникла проблема с возвратом Json в jquery, строка json возвращалась с множеством слешей... попробуйте это в случае, если первое решение выдает ошибку (это сообщит о строке, возвращенной сервером формы без декодирования json):
$(function() {
$.ajax({
type: "POST",
url: "load_config.php",
dataType: "text",
data: dataString,
success: function(data)
{
alert(data);
}
});
});
Извините за мой английский. скажи мне что-нибудь, если это сработало...