jQuery: загрузка идентификатора из базы данных - PullRequest
0 голосов
/ 27 июля 2010

Итак, у меня много переключателей с одинаковыми именами, но разными идентификаторами, и я не хочу указывать одну из них при загрузке страницы. Идентификатор нужной кнопки сохраняется в базе данных. Я пробовал такое решение для реального вызова 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 ]

1 голос
/ 27 июля 2010

Дважды проверьте, вернется ли ваш 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.

0 голосов
/ 27 июля 2010

Попробуйте проверить свой ответ на данные:

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

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

...