2011-11-23 4 views
1

나는 $('#countryid').load('/some/url',{country: country_id});과 함께 jQuery를 사용하여 이전에 선택한 국가에 따라 지역에 대한 옵션을 자동으로로드합니다.AJAX - html이 아닌 javascript 코드를로드하는 방법?

그리고 html로 아약스를로드하면 잘 작동합니다.

하지만 자바 스크립트 코드를로드해야합니다. 내가하려고 할 때 모든 선택 필드가 전혀 페이지에서 사라집니다 ...

내가 뭘 잘못하고 있니?

코드 :

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#countrydropdown').change(function() { 
     var countryvalue = $('#countrydropdown option:selected').val(); 
     if(countryvalue==0){clearlist();} 
     getarea(); 
    }); 
}); 
function getarea(){ 
    var countryvalue = $('#countrydropdown option:selected').val(); 
    var area = $('#areadropdown'); 
    if(countryvalue==0){ 
     area.attr("disabled",true); 
    }else{ 
     area.attr("disabled",false); 
     area.load('/ajax/2/',{country: countryvalue}); 
    } 
} 
function clearlist(){ 
    $('#areadropdown').empty(); 
} 
</script> 

<form action="" id="form"> 
    <select id="countrydropdown"> 
     <option value="0">Countries</option> 
     ... 
    </select> 
    <select id="areadropdown" disabled="disabled"> 

    </select> 
</form> 

감사합니다!

+0

시도해 주시는 자바 스크립트 코드를 게시 할 수 있습니까? – Unknown

+0

코드를 추가했습니다. –

답변

1

:

<script type="text/javascript">for(var i in arr) document.write(arr[i]);</script>

페이지를로드 한 후이 문서는 폐쇄 상태가됩니다.

도크 상태에있는 문서에 document.write을 연결할 수 없으므로 document.open이 자동으로 호출됩니다.

이렇게하면 기존 문서가 휴지통으로 바뀌므로 새 문서를 쓸 수 있습니다.

DOM을 사용하여 문서를 조작하십시오. document.write 근처로 가지 마십시오.

1

당신은 단지 자바 스크립트를로드하는 경우 자바 스크립트 코드를

eval(ajax.request); 
+0

'eval'은 ** evil ** –

+0

입니다.'eval()'만이 문제에 대한 유일한 해결책이라면, 대체 방법을 생각하고 이에 따라 코드를 재구성해야합니다. –

0

을 실행하기 위해 평가 사용할 수 있습니다, 다음 getScript 대신 load 사용합니다.

HTML과 자바 스크립트의 조합을로드하는 경우 리팩토링에 중점을 두어 자바 스크립트가 이미 있으며 이벤트는 요소 자체에 직접 바인딩되는 대신 live을 사용하여 처리됩니다. 내 이전의 대답에 귀하의 의견은 당신이 사용하는 제안 코드를 기반으로

+0

html과 (의 차이점 document.write (arr [i]);'? 나는 말할 수있다 - 그것은 또한 html이다. –

+0

'innerHTML'을 눌렀을 때 스크립트는 특별한 처리를합니다 ...하지만 지금 당신이 실행하려고하는 코드를 보았습니다 ... 제가 쓰려고하는 다른 대답을보십시오. – Quentin

관련 문제