2012-01-24 3 views
3

오케이 긴 이야기를 짧게 만들기 위해 jquery 모바일 envoirment에서이 스크립트를 사용하고 있습니다. 데이터베이스에서 결과를 얻기 위해 아약스를 사용하고 있습니다. 현재 작동하지만 자동으로 새로 고치지 않습니다. 내가 설정 한 간격 기능을 사용하는 방법에 대한 수많은 온라인 게시물을 읽고 나는 그것을 시도했다. 그러나 그것을 시도 할 때 작동하지만 중복 된 내용 (동일한 데이터베이스 레코드를 반복해서 추가)을 계속 유지합니다. 나는 이걸 작동시킬 수없는 것 같습니다. 어떤 도움이라도 미리 감사드립니다. Jquery ajax 새로 고침, 작동시키지 못함

<script type="text/javascript"> 
$(document).delegate("#member_home", "pagecreate", function() 
{ 
var member= new Array(); 
$.ajaxSetup({cache: false}) 
$.ajax({ 
url: '/scripts/alert_display.php', 
data: "", 
isajax: 1, 
dataType: 'json', 
success: function(data) 
    { 
    $.each(data, function(key, val) { 

var friend = val['friend']; 

$('#member_alerts').append(friend+"&nbsp;Wants to be your friend<input type='hidden' value='"+friend+"' id='hidden4' /><button type='submit' id='add'>Accept</button><br />"); 
                 }); 
                } 
              }); 

           }) 
        </script> 

그래서 그냥 명확하게하기 위해, 지금과 같이해야 내 코드

을? :, 도움을 주셔서 너무 감사합니다 여기에

내 코드 (*이 아닌 내가 setInterval을 기능을 제거)입니다
<script type="text/javascript"> 
$(document).delegate("#member_home", "pagecreate", function() 
{ 
var refreshId = setInterval(function() 
{ 
var member= new Array(); 
$.ajaxSetup({cache: false}) 
$.ajax({ 
url: '/scripts/friend_request_display.php', 
data: "", 
isajax: 1, 
dataType: 'json', 
success: function(data) 
    { 
    $.each(data, function(key, val) { 

var friend = val['friend']; 

$('#member_alerts').html(friend+"&nbsp;Wants to be your friend<input type='hidden' value='"+friend+"' id='hidden4' /><button type='submit' id='add'>Accept</button><br />"); 
                 }); 
                } 
              }); 
       }, 1000); 
           }) 
        </script> 
+0

각 함수 앞에 success 함수의 data = eval (data)가 포함되어 있습니다. –

+0

im 미안하지만 저에게 예제를 보여줄 수 있습니까? –

답변

2

요소의 현재 DOM에 추가하는 append 함수를 사용 중이므로 중복 된 콘텐츠가 계속 추가됩니다. 대신 html을 사용하십시오 (div 태그를 만들어야 할 수도 있음). 자세한 내용은 this SO question을 참조하십시오.

1

당신이

$('#member_alerts').html(yourcontenthere); 

를 사용하는 경우 그런 다음이 중복 콘텐츠의 문제를 해결해야한다.

1

간격으로 새로 고침을 시도하는 경우 jquery ajax의 콜백에 setTimeout을 넣어야합니다. 그러면 요청이 완료된 후 다시 함수를 호출 할 때까지 함수가 대기 할 수 있습니다.

나는 별도의 함수에 호출을 작성한 다음 페이지가로드 될 때 한 번 호출하고, ajax 요청이 완료 될 때마다 setTimeout (myFunction, 1000)을 사용하여 재귀 적으로 호출한다. 이렇게하면 setInterval에서와 같이 문제를 일으킬 수있는 동시에 여러 번 서버에 요청하는 것을 방지 할 수 있습니다.