programing

.ajax() 호출의 데이터에 대한 jQuery .find()가 div 대신 "[객체]"를 반환합니다.

powerit 2023. 2. 22. 23:17
반응형

.ajax() 호출의 데이터에 대한 jQuery .find()가 div 대신 "[객체]"를 반환합니다.

찾는 중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]
    }
});

구체적으로 말하면, 올바르게 동작하고 있는 것 같습니다.돌아온다면서요?[object Object]이것이 jQuery가 반환하는 것입니다.find("#result")방법.일치하는 jQuery 요소를 반환합니다.find문의합니다.

해당 객체의 속성을 가져옵니다.result.attr("id")- 다시 돌아옵니다.result.


일반적으로 이 답변은 다음 중 어느 쪽에 해당하는지 여부에 따라 달라집니다.#result는 최상위 요소입니다.

한다면#result최상위 요소입니다.

<!-- #result as top level element -->
<div id="result">
  <span>Text</span>
</div>
<div id="other-top-level-element"></div>

find()동작하지 않습니다.대신,filter():

var $result = $(response).filter('#result');

한다면#result최상위 요소가 아닙니다.

<!-- #result not as top level element -->
<div>
  <div id="result">
    <span>Text</span>
  </div>
</div>

find()동작합니다.

var $result = $(response).find('#result');

나는 단지 3시간 동안 비슷한 문제를 풀었다.이게 나한테 효과가 있었어.

내가 내 몸에서 꺼내려고 했던 요소는$.getresponse는 본문 태그의 첫 번째 자식 요소입니다.어떤 이유에서인지 이 요소에 div를 둘렀을 때, 그것을 통해 검색할 수 있게 되었습니다.$(response).find('#nameofelement').

왜 그랬는지 모르겠지만, 그래, 회수 가능한 요소는 신체의 첫 번째 아이일 수 없어...누군가에게 도움이 될 수 있다:)

이것을 시험해 보세요.

result = $("#result", response);

그건 그렇고.alert디버깅을 하기 위한 대략적인 방법입니다.console.log

답은 다음과 같습니다.

<div class="test">Hello</div>
<div class="one">World</div>    

다음 jQuery가 작동하지 않습니다.

$(data).find('div.test');    

div는 최상위 요소이고 데이터는 요소가 아니라 문자열이기 때문에 작동하려면 .filter를 사용해야 합니다.

$(data).filter('div.test');    

또 다른 질문입니다.$에 Jquery Selector를 사용합니다.AJAX가 HTML을 로드했습니까?

parse html을 사용하는 것을 잊지 마십시오.예를 들어 다음과 같습니다.

$.ajax({
    url: url, 
    cache: false,
    success: function(response) {
        var parsed = $.parseHTML(response);
        result = $(parsed).find("#result");
    }
});

동작해야 한다:)

이 방법은 효과가 있었습니다.$(응답)의 끝에 .html()을 붙이면 됩니다.find(#result")

jQuery find()가 DOM 개체를 랩하는 jQuery 개체를 반환하고 있습니다.div를 원하는 대로 하려면 그 물체를 가지고 작업할 수 있어야 합니다.

문제Ajax 응답이 문자열을 반환하고 있기 때문에 $(response)를 직접 사용하면 콘솔에 JQUERY: Uncaught Error: Syntax Error, Uncognized error, uncognected expression이 반환된다는 것입니다.이 기능을 올바르게 사용하려면 먼저 $.parseHTML(응답)이라는 JQUERY 내장 함수를 사용해야 합니다.함수 이름이 의미하는 것처럼 먼저 문자열을 html 개체로 해석해야 합니다.고객님의 경우 다음과 같습니다.

$.ajax({
    url: url, 
    cache: false,
    success: function(response) {
        var parsedResponse = $.parseHTML(response);
        var result = $(parsedResponse).find("#result");

        alert(response); // returns as string in console
        alert(parsedResponse); // returns as object HTML in console
        alert(result); // returns as object that has an id named result 
    }
});

dataType: "html"

jQuery를 지정하지 않으면 요청된 데이터 유형을 추측합니다(http://api.jquery.com/jQuery.ajax/) 체크).내 생각엔 네 경우엔response wasString가 a a DOMObject【DOM】【String】【스트링】

는 '어느 정도'로 해 볼 수 요.console.log("type of response: " + typeof response) (오류)alert("type of response:" + typeof response)Firebug (Firebug)

이 방법으로 div를 찾아서 속성이나 원하는 것을 얻을 수 있습니다.

$(response).filter('#elementtobefindinresponse').attr("id");

또는

$(response).filter('img#test').attr("src");

이는?#resultHTML 답 html html html html? 아무것찾을에도 빈 를 반환합니다.jQuery는 아무것도 찾지 못한 경우에도 빈 개체를 반환합니다.

alert(result.length);

해서 더 돼요.dataType: "html"요청대로 하겠습니다.html DOM html DOM html 을 사용합니다.

다음 코드만 사용합니다.

var response= $(result);

$(response).find("#id/.class").html(); [or] $($(result)).find("#id/.class").html();
$.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

if ( $ ( response )를 실행합니다.필터(#result')를 지정합니다.length ) // 무엇인가를 실행한다.

경보 사용 중인 내용을 보려면:

alert( $(response).find("#result").html() );

이런 걸 해야 될 수도 있어요

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

그 다음, 이 기능을 사용할 수고를 덜어줍니다.

result = $(content).find("#result")

언급URL : https://stackoverflow.com/questions/3300332/jquery-find-on-data-from-ajax-call-is-returning-object-object-instead

반응형