jQuery .find () для данных из вызова .ajax () возвращает "[объектный объект]" вместо div - PullRequest
45 голосов
/ 21 июля 2010

Попытка найти элемент div с id="result" в возвращенных данных из .ajax() с использованием .find(). К сожалению, alert(result) не возвращает div#result.

Вот мой код:

$.ajax({
    url: url, 
    cache: false,
    success: function(response) {
        result = $(response).find("#result");
        alert(response); // works as expected (returns all html)
        alert(result); // returns [object Object]
    }
});

Ответы [ 18 ]

0 голосов
/ 20 июля 2018

try if ($ (response) .filter ('# result'). Length) // сделать что-то

0 голосов
/ 23 февраля 2018
$.ajax({
    url: url,
    cache: false,
    success: function(response) {
        $('.element').html(response);
    }
});

< span class = "element" >
    //response
    < div id = "result" >
        Not found 
    </div> 
</span>

var result = $("#result:contains('Not found')").text();
console.log(result); // output: Not found
0 голосов
/ 27 июля 2017

вы просто используете следующий код

var response= $(result);

$(response).find("#id/.class").html(); [or] $($(result)).find("#id/.class").html();
0 голосов
/ 27 января 2014

если ваш вызов ajax возвращает массив JSON, строку JSON со стороны сервера, тогда вы должны начать делать следующее:

$("button#submit").click(function() {
    $.ajax({
        type: "POST",
         url: "ajax_create_category",
        data: $('form#create_cat_form').serialize(),
     success: function(data)
          {
          if(data)
          {
              var jsonObj = JSON.parse(data);
              if(jsonObj.status)
              {
                $("#message").html(jsonObj.msg);
              }
            }
         }
       });
    });

Анализ вашего JSON-объекта в JS-объект (переменную), а затем вы можете использовать индекс данных для извлечения данных! Надеюсь, это будет полезно для некоторых из вас, ребята! :)

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

Есть ли #result в ответном HTML? Попробуйте следующее. jQuery все равно вернет пустой объект, если ничего не найдет.

alert(result.length);
0 голосов
/ 21 июля 2010

Вы должны добавить dataType: "html" к запросу.Я совершенно уверен, что вы не сможете найти DOM в возвращенном HTML, если он не знает, что это HTML.

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

Укажите dataType: "html".

Если вы этого не сделаете, jQuery будет угадывать запрошенный тип данных (проверьте: http://api.jquery.com/jQuery.ajax/). Я предполагаю, что в вашем случае response было String, а не DOMObject. Очевидно, что методы DOM победили ' работает над строкой.

Вы можете проверить это с помощью console.log("type of response: " + typeof response) (или alert("type of response:" + typeof response), если вы не запускаете Firebug)

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

Возможно, вам придется сделать что-то вроде

var content= (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d

тогда вы сможете использовать

result = $(content).find("#result")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...