AJAX - как загрузить код JavaScript не HTML? - PullRequest
1 голос
/ 23 ноября 2011

Я использую jQuery с функцией $('#countryid').load('/some/url',{country: country_id});, чтобы автоматически загружать опции для регионов в зависимости от выбранной страны.

И он прекрасно работает, когда я загружаю html через ajax.

Но мне нужно загрузить код JavaScript. Когда я пытаюсь это сделать, все выбранные поля вообще исчезают со страницы ...

Что я делаю не так?

Код:

<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>

Спасибо !!!

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

На основании кода, который ваш комментарий к моему предыдущему ответу предполагает, что вы используете:

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

После загрузки страницы документ войдет взакрытое состояние.

Вы не можете document.write к документу в закодированном состоянии, поэтому автоматически будет вызван document.open.

Это уничтожит существующий документ, чтобы можно было написать новый.

Используйте DOM для управления документом, не приближайтесь к document.write.

1 голос
/ 23 ноября 2011

Вы можете использовать eval для выполнения кода JavaScript

eval(ajax.request);
0 голосов
/ 23 ноября 2011

Если вы загружаете просто JavaScript, тогда используйте getScript вместо load.

Если вы загружаете комбинацию HTML, а затем JavaScript, то я бы серьезно подумал о рефакторинге, чтобы JavaScript был уже на месте, а события обрабатывались с использованием live вместо прямой привязки к сами элементы.

...