2010-04-03 5 views
1

버튼을 클릭하면 서버에서 사용자 정의 컨트롤을로드하는 간단한 jQuery.ajax 함수를 작성했습니다. 단추를 처음 클릭하면 서버로 이동하여 사용자 정의 컨트롤을 가져옵니다. 그러나 이후에 동일한 버튼을 클릭해도 서버로 이동하지 않아 사용자 컨트롤을 가져올 수 없습니다.

내 사용자 정의 컨트롤은 db에서 데이터를 가져 오므로 버튼을 누를 때마다 사용자 정의 컨트롤을 다시로드해야합니다. 그러나 어쨌든 내 사용자 정의 컨트롤을 페이지에서 언로드하고 단추를 다시 클릭하면 서버로 이동하여 사용자 정의 컨트롤을 가져옵니다. 여기 코드는 다음과 같습니다


$("#btnLoad").click(function() { 
    if ($(this).attr("value") == "Load Control") { 
$.ajax({ 
    url: "AJAXHandler.ashx", 
    data: { "lt": "loadcontrol" }, 
    dataType: "html", 
    success: function(data) { 
    content.html(data); 
    } 
}); 
$(this).attr("value", "Unload Control"); 
    } 
    else { 
$.ajax({ 
    url: "AJAXHandler.ashx", 
    data: { "lt": "unloadcontrol" }, 
    dataType: "html", 
    success: function(data) { 
    content.html(data); 
    } 
}); 
$(this).attr("value", "Load Control"); 
    } 
}); 

가 나는 버튼을 클릭 서버마다에서로드 내 사용자 정의 컨트롤을 얻을 수있는 다른 방법이 있으면 알려 주시기 바랍니다. 당신의 btnLoad 당신이 다시로드하고 사용자 컨트롤 내부의 경우

답변

2

값이 falsecache 속성을 jQuery.ajax에 전달하는 객체에 추가하십시오.

$.ajax({ 
    url: "AJAXHandler.ashx", 
    cache: false, 
    data: { "lt": "loadcontrol" }, 
    dataType: "html", 
    success: function(data) { 
    content.html(data); 
    } 
}); 

다음과 같은 방법으로 전 세계적으로이를 설정할 수 있습니다

jQuery.ajaxSetup({ 
    cache: false 
}); 

jQuery를 기본적으로 SCRIPT/JSONP를 제외하고 아무것도 캐시 된 응답을 사용합니다.

+0

감사합니다. Matt. 문제가 해결되었습니다. – Ashish

1

대신이 작업을 수행 할 필요가 :

$("#btnLoad").live('click', function() { 

아약스를로드 할 때, 당신은 요소를 교체하고, 어떤 이벤트 핸들러가 그들에게 직접 바인딩 . .live()을 대신 사용하면 콜백의 일부로 파기되지 않습니다 ... 다르게 작동하며 이벤트 처리기가 DOM에서 더 많이 사용되므로 버튼 자체를 인식하지 못합니다.

+0

btnLoad는 (는) 내 사용자 컨트롤의 일부가 아닙니다. btnLoad를 클릭하면 사용자 정의 컨트롤이로드됩니다. 나는 운이없는 곳에서도 라이브를 사용하려고 노력했다. – Ashish

관련 문제