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);
        }
  });
});

Извините за мой английский. скажи мне что-нибудь, если это сработало...

Другие вопросы по тегам