2013-08-28 2 views
0

아약스 요청이 있습니다. 사용자가 편집 링크를 클릭하면 항목의 ID를 가져 와서 양식에로드 된 해당 항목의 데이터로 페이지를 새로 고칩니다.jQuery 아약스 요청이 번거롭다

내 문제는 : 이것은 ajax 호출 전에 나타나는 경고와 함께 작동합니다. 경고를 생략하면 아약스 오류가 발생하지만 (ID가 게시 됨에도 불구하고) PHP 페이지가 다시로드됩니다. 또한, 그것은 성공 콜백으로 newDoc 물건을 넣을 때만 작동합니다. 전체 콜백과 동일한 라인과 페이지가 다시로드됩니다. 더욱이 이것은 Firefox에서만 발생합니다.

jQuery('a.edit').on('mousedown', function (e) { 
    e.preventDefault(); 
    var id = jQuery(this).attr('data-title'); 
    alert('test'); 
    jQuery.ajax({ 
     url: document.location, 
     data: { 
      id: id 
     }, 
     success: function (data) { 
      var newDoc = document.open("text/html", "replace"); 
      newDoc.write(data); 
      newDoc.close(); 
     }, 
     error: function() { 
      alert('error'); 
     } 
    }); 
}); 

어떻게해야합니까?

편집 : 타이밍 문제 여야합니다. 나는 편집 링크를 잠시 동안 누르고 있으면 모든 것이 정상적으로 작동한다는 것을 알았다. 내가 짧은 클릭을 할 때, 그것은하지 않습니다. 그래서 setTimeout()에서 Ajax를 래핑하려고 시도했지만 도움이되지 않았습니다. 다른 아이디어?

+0

왜 '$'대신'jQuery'를 사용하고 있습니까? – bansi

+0

왜 Ajax 호출은 창을 여는 것보다 더 간단합니까? 시작하기 위해 창을 열면 어떨까요? – epascarello

+0

@bansi는'$ '를 통해'jQuery'를 사용합니다. 크로스 프레임 워크/라이브러리 코드를 작성하는 동안 많은 골치 거리를 없애줍니다. – itachi

답변

0

속성은 URL의 부분에 대응하여,

jQuery.ajax({ 
    url: location.href, 
    data: { 
     id: id 
    }, 
    success: function (data) { 
     var newDoc = document.open("text/html", "replace"); 
     newDoc.write(data); 
     newDoc.close(); 
    }, 
    error: function() { 
     alert('error'); 
    } 
}); 

location

구조화 목적, document.location 대신 location.href 사용하려고. location.href은 단일 문자열의 전체 URL입니다.

+0

동일한 문제를 시도했습니다. 나는 document.location이 틀린 이유를 알지 못한다. 나는 그 길을 확인했는데 그 길은 옳았다. 내 게시물에 설명 된 상황에서, 그것은 document.location과 finde 작동합니다. – eevaa

+0

** document.location **은'object'이고'ajax url'은'string'이어야합니다. http://api.jquery.com/jquery.ajax/ –

+0

안전을 위해 .toString()을 추가했습니다. 그래도 작동이 안되는. – eevaa

0

알 수 있습니다.

문제는 Firefox가 mousedown 이벤트를 처리하는 방식입니다. 마우스 단추를 놓으면 바로 아약스 호출을 중단하는 것 같습니다. 이벤트를 으로 변경하고을 클릭하면 모든 것이 정상입니다.

jQuery('a.edit').on('click', function() { 
    var id = jQuery(this).attr('data-title'); 
    jQuery.ajax({ 
     url: document.location, 
     data: { 
      id: id 
     }, 
     success: function (data) { 
      var newDoc = document.open("text/html", "replace"); 
      newDoc.write(data); 
      newDoc.close(); 
     } 
    }); 
}); 
관련 문제