2014-11-17 4 views
0

어떤 이유에서든 내가 잘못 입력 한 api 검색에서 제외해야하는 if 문은 그 일을하지 않습니다. ajax 요청은 no-results 메시지 div와 함께 올바른 검색 결과로 돌아옵니다.아약스 호출의 else 문이 작동하지 않는 경우

실제로 아무런 결과가없는 경우 필터를 적용하고 메시지를 표시하는 것으로 보입니다.

$.ajax({ 
    url: "apis/api", 
    type: "get", 
    dataType: "json", 

    success: function(data) { 
    if (data.status == "success") { 
     $("#results").html(data); 
    } else { 
     $("#results").html("<div class='no-results'>No matches.</div>"); 
    } 
    } 
}); 

나는 또한 실제로 다른 조건으로하지 않습니다이 성공 블록, 시도 :

success: function(data) { 
    if ($(document).ajaxSuccess()){ 
     $("#results").html(data); 
    } else { 
     $("#results").html("<div class='no-results'>No matches.</div>"); 
    } 
    } 

나는 반전 시도를 여기

는 성공 로직과 함께 아약스 요청입니다 ! = 그러나 행운이없는 if else 문.

왜 이것이 작동하지 않을지 잘 모르겠습니다. 도와주세요, 고마워요!

+0

'if ($ (document) .ajaxSuccess()) {'는 당신이 생각하는대로하지 않습니다. '$ (document) .ajaxSuccess()'는 성공적인 AJAX 호출에 * 콜백 *을 첨부하는 데 사용됩니다. 당신은'$ (document) .ajaxSuccess (function() {})'을 할 것이다. –

+0

'console.log (data)'는 당신에게 무엇을 보여 줍니까? –

+0

@RocketHazmat 그것은 Object (response : Object) – PanicBus

답변

1

외부 API에 대한 호출을 기반으로, 반환되는 개체의 루트 수준에 "상태"특성이 없다고 가정하므로 data.status은 항상 nil을 반환합니다. 이 경우 첫 번째 조건 if (data.status == "success")은 항상 false로 평가되고 두 ​​번째 부분은 평가됩니다. console.log 또는 debugger을 사용하면 반환 한 개체에 포함 된 것을 더 잘 파악한 다음 조건부를 다시 생각해보십시오.

0

HTML이 어떤 모양인지 모르겠으나 getpost으로 변경해야 할 수도 있습니다. json도 사용하고 있으므로 json 데이터 배열에 올바른 키를 지정해야합니다.

data.status과 마찬가지로 HTML은 data.html이어야합니다.

$json = array('status' => 'success', 'html' => '<div>Some HTML</div>'); 
echo json_encode($json); 

PHP를 사용하고 있다고 가정하십시오.

$.ajax({ 
    url: "apis/api", 
    type: "post", 
    dataType: "json", 

    success: function(data) { 
    if (data.status == "success") { 
     $("#results").html(data.html); 
    } else { 
     $("#results").html("<div class='no-results'>No matches.</div>"); 
    } 
    } 
}); 
1

그것은 모두 당신의 ifelse 가지 서버에 여러 요청을 여러 결과를 얻는 것을 의미 같은 전화에 을 실행하는 것이 불가능합니다.

이것은 사용자가 입력 한 텍스트가 변경 될 때마다 요청을 보내기 때문에 발생했을 가능성이 큽니다. Debouncing JavaScript Methods에 설명 된 것과 유사한 기술을 사용하여 요청을 디버깅해야합니다. 서버 요청이 처리되지 않은 상태에서 사용자가 텍스트를 입력하면 새 요청을 보내기 전에 보류중인 요청을 취소해야합니다.

+1

+1 OP는 아마'keyup' 이벤트에 첨부 된 ajax를 실행하고 있기 때문입니다. – Darren

관련 문제