.html () Проблема - PullRequest
       17

.html () Проблема

0 голосов
/ 24 сентября 2011

У меня возникла небольшая проблема с работой функции .html() в jQuery.

По сути, страница получает немного HTML через файл PHP с помощью функции jQuery post(), а затем вставляет ее в документ. Он получает данные из PHP-файла нормально, он просто не вставит их в документ. Ниже приведен фрагмент кода JavaScript.

function lookup(inputString,location) {
    if(inputString.length == 0) {
        // Hide the suggestion box.
        var suggestions = '#suggestions'+location;
        $(suggestions).hide();
    }
    else {
        $.post(
            "boatnames.php",
            {queryString: ""+inputString+"", number: ""+location+""},
            function(data){
                if(data.length >0) {
                    var suggestions = '#suggestions'+location;
                    $(suggestions).show();
                    var autosuggestions = '#autoSuggestionsList'+location;
                    $(autosuggestions).html(data);
                }
            });
    }
}

function fill(thisValue,location) {
    var textfield = "#BoatName"+location;
    $(textfield).val(thisValue);
    var suggestions = '#suggestions'+location;
    $(suggestions).hide();
}

Я использую jQuery 1.6, jQuery UI 1.8.16 и последнюю версию jQuery validate. Это работает на другой странице, так что, скорее всего, я что-то напутал, но не вижу! Все сценарии находятся в <head></head>, и часть, к которой я хочу добавить HTML, существует.

Ответы [ 3 ]

1 голос
/ 24 сентября 2011

Если я правильно помню, возвращаемая переменная data является объектом, а фактический HTML, который возвращает ваша страница, находится в свойстве responseText.

Вы можете попробовать это:

$(autosuggestions).html(data.responseText);
0 голосов
/ 24 сентября 2011

В jQuery есть функция, специально разработанная для передачи HTML-кода с сервера в элемент.

var autosuggestions = '#autoSuggestionsList'+location;
var params = {queryString: ""+inputString+"", number: ""+location+""}; 
$(autosuggestions).load("boatnames.php", params, function(){
   var suggestions = '#suggestions'+location;
   $(suggestions).show();
});
0 голосов
/ 24 сентября 2011

Когда у меня возникает проблема такого типа, причина обычно одна из:

  1. Селектор неверен, т. Е. Переменная autosuggestions не содержит значения фактического идентификатора элемента. (В моем случае я обычно где-то делал опечатку.)
  2. Возвращенные данные не являются действительными HTML.

Итак, убедитесь, что:

  1. $ (autosuggestions) .length! == 0.
  2. typeof data это "строка", и эта строка на самом деле содержит HTML.
...