2012-01-24 3 views
2

u 매우 기본적인 다운로드 카운터를 구현하고 싶었습니다. 링크를 클릭하면 서버에 ajax 요청을 보내야하며 다운로드가 시작됩니다.jquery ajax 호출 결과가 xhr.status == 0

<a href="<?= $update->link ?>" onClick="downloadCount(<?= $update->id ?>);"><?php echo img(array("height" => "24", "src" => "images/btn_free.png")); ?></a> 

내가 링크를 생성하는 방법입니다. (내가 URL의 모든 것이 괜찮 복사하면)

function downloadCount(id_) { 
    $.ajax({ 
     url: '<?= base_url() ?>index.php/updates/incCount/' + id_.toString(), 
     success: function() { return true }, 
     error:function (xhr, ajaxOptions, thrownError){ 
          alert(xhr.status); 
          alert(thrownError); 
         } 
    }); 

URL이 정확 하지만 링크를 클릭 할 때 난 그냥 (0 1, 2가 비어) 2 경고를 받았습니다

난에 return false;를 추가 할 때 onClick 부분은 링크가 실행되지 않고 ajax 호출이 성공한 경우 내 함수에 return false;을 추가하면 링크가 매번 (WHY ??) 진행되고 ajax 호출이 오류로 반환됩니다. ... 내가 좀이 일반적으로 매우 쉬운 일이> _ <

+0

도메인은 동일하며, 프로토콜은 동일하며, 포트가 동일? 'base_url()'은 후행 슬래시를 줍니까? – lonesomeday

답변

3

링크를 클릭하면 다른 페이지로 이동하는 브라우저를 원인으로 인해 혼동하고있어

도메인은 동일 그래서 이것은 이유 안 이것은 어떤 현저한 Ajax 요청을 중단 시키므로 오류가 발생합니다.

당신이 페이지를 다시로드하거나하지 여부를 결정하기 위해 downloadCount 기능을 위해 원하는 경우, 당신은 반환 처리기에서이 값이 필요합니다

onClick="return downloadCount(<?= $update->id ?>);" 
+0

나는 Ajax 함수 호출 이후에'return false; '를 추가 할 때 브라우저가 여전히 다른 사이트로 이동하는 이유는 무엇인가? – soupdiver

+0

@skelle 업데이트를 참조하십시오. –

+0

아아아, 내가 그것을 놓쳤다 :) – soupdiver

0

JQuery와 방법을,로 preventDefault()를 사용합니다.

http://api.jquery.com/event.preventDefault/

+0

'return false;'실제로'e.preventDefault()'(&'e.stopPropagation()')를 수행 할 것이다. – Johan

+0

@Johan 정말로, stopPropagation' 이벤트 위임을 방지하기 때문에 안됩니다. – lonesomeday

+0

@Johan, 여기서 e.stopPropagation()을 수행해야합니까? – Jashwant