2011-12-14 2 views
0

JSONP를 사용하여 mysql db에서 데이터를 가져 오는 내 jquery 모바일 앱을 보유하고 있습니다. 데이터가 정상적으로 작동하지만 문제는 내 앱의 이전 '페이지'로 돌아가서 다른 옵션을 클릭하면 다음 화면에서 데이터가 두 배가되고 데이터가 여러 번 스태킹됩니다. 내가 그랬듯이. 내가 뭘 놓치고 있니?JQuery Mobile 및 JSONP

모든 브라우저에서 앱이 제대로 보이지 않지만 ios 시뮬레이터 또는 appmobi 시뮬레이터에서 제대로 표시됩니다. 필요한 경우 코드를 게시 할 수 있습니다. 브라우저에서 제대로 보이지 않을 수도 있습니다.

는이 어둠 속에서 샷을 프로젝트에서 코드없이 그래서

$('#two').bind('pagecreate',function(event){ 

var img = getUrlVars()["st"]; 
var photo = $('#img'); 

$.ajax({ 
    type: 'GET', 
    url: 'http://serverhidden/json/img.php?st='+img, 
    dataType: 'jsonp', 
    success: function(data) { 
    $.each(data, function(i,item){ 
    var image = '<img class="stmap" src="images/states/lrg/'+item.img+' "/>';     

     photo.html(image); 

     });    
    }, 
     error: function(e) { 
     //called if there is an error 
     //console.log(e.message); 
    } 
}); 
}); 
+0

"데이터를 두 배로 늘다"는 것은 무엇을 의미합니까? DOM은 "페이지"(실제 페이지 또는 동일한 페이지의 다른 화면)간에 동일하게 유지 될 수 있으며 jsonp를 한 번 더로드합니다. – reconbot

+0

그래, 그건 잘못된 용어 였을거야. 예를 들어 캘리포니아 주를 선택하면 돌아가서 해당 주에 대한 링크를 다시 클릭하면 캘리포니아에 대한 정보가 두 번 표시됩니다. 다른 주를 선택하면 캘리포니아가 다시 표시되지만 지금은 세 번 표시됩니다. 그 때마다 계속 추가됩니다. 모든 페이지가 하나의 HTML 페이지이므로 "pages"라는 단어를 사용하는 이유입니다. – theschwag

+0

당신이 페이지에 갈 때마다 이벤트가 구독되는 것과 같이 점점 더 소리가납니다. – Dessus

답변

0

이벤트를 여러 번 구독하지 않았는지 확인하십시오. 바보 같지만 쉽게 할 수 있습니다.

사이트를 업데이트하는 횟수를 알 수 있도록 JQM 사이트에 로그를 추가하는 것이 좋습니다.

JQMobile 페이지를 업데이트하려면 페이지를 렌더링 한 후 콘텐츠를 업데이트하는 방법을 호출해야하는 경우도 있습니다. 여기를 참조하십시오 : jQuery Mobile rendering problems with content being added after the page is initialized

희망을 바랍니다.

0

를 제공 할 수있는 모든 도움을 주셔서 감사합니다하지만 당신은 .append()pageshow에 대한 정보와 의사 페이지를 채우는 것처럼 보인다 요구. .append()을 사용하는 대신 .html()을 사용하십시오. 추가하지 않고 이미 표시된 정보를 대체하므로 그대로 사용하십시오.

각 상태가 개별 페이지 인 경우 (또는 이와 유사한) 이벤트에 바인딩하여 각 pageshow 이벤트가 아닌 데이터가 한 번만 추가되도록 할 수 있습니다.

+0

나는 당신이 뭔가있는 것 같아. #two라는 가상 페이지를 추가 한 코드를 맨 위로 되돌아 봅니다. 서버에서 이미지를 가져 와서 앱에 다시 뱉어냅니다. – theschwag