2012-02-15 2 views
0

Отказ от ответственности: Я очень новичок в этом, поэтому, пожалуйста, расскажите об этом.Обновить javascript без обновления страницы

Здравствуйте,

Im создание сайта с помощью AJAX для загрузки содержимого страницы без необходимости покидать страницу. У меня есть несколько страниц, которые используют javascript для загрузки информации о списке.

Вот настройка выглядит ссылка:

#home 
#list.php?list=$list_id 

У меня есть переменная $ list_id и использовать это с некоторыми JavaScript, чтобы загрузить список. Проблема, с которой я сталкиваюсь, заключается в том, что если я загружаю один список (скажем, список с идентификатором 1), вернитесь назад и загрузите другой список (скажем, список с идентификатором 2), javascript не перезагрузился для учета нового идентификатора списка.

Есть ли в любом случае я могу перезагрузить код javascript для учетной записи для новой переменной, не обновляя страницу?

Спасибо!

+0

Пожалуйста, покажите нам полный код, чтобы мы могли помочь. Что вы подразумеваете под словом «вернуться» (в браузере?)? – JMax

ответ

0

Не удалось сохранить $ list_id в скрытом поле ввода и затем обновить его после вызова ajax?

например.

<input type="hidden" id="list-id" value="<?php echo $list_id; ?>" /> 

    <script> 
    //ajax request 
    var $list_id = $('#list-id'); 
    $.ajax({ 
    url:'http://www.example.com/page.php', 
    data:'list_id=' + $list_id.val(), 
    success:function(data){ 
    //do something 

    $list_id.val() = $list_id.val() + 1; 
} 
}); 

просто мощеную это вместе быстро, чтобы дать вам идею, так что могут быть некоторые ошибки JS

4

Я не понимаю, что проблема вы столкнулись с точно. , но если вы хотите, чтобы перезагрузить скрипт без перезагрузки страницы, вы можете сделать так:

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = "somefile.js"; 
document.getElementsByTagName("head")[0].appendChild(script); 

или использовать функцию jQuery.loadScript

+0

Как это сделать, если скрипт внутри страницы. Например, . Имейте в виду, что я использую JS на странице, поскольку я использую переменные php в JS. – user1210772

0

Вы можете использовать функцию getScript() JQuery для получения (и выполнения) скриптов динамически. Например:

$.getScript("/js/myscript.js"); 
+0

Сценарий не находится в файле extenal. Я использую

1

При вставке HTML в сценарии DOM. Поэтому, когда вы загружаете некоторый HTML через AJAX, вы можете выполнять содержащиеся скрипты.

0

Как правило, было бы лучше разработать протокол здесь. У вас должна быть одна функция для анализа всех загружаемых «списков», одной функции для анализа хэша URL-адреса и одной функции для загрузки новых списков. Вы можете получить хеш URL с location.hash.

Вот простой пример, который ожидает, что список будет определенным форматом. Таким образом, это будет протокол, так как в вашем Javascript нужно только загружать один раз, и он должен ожидать определенный формат, который он мог бы анализировать без каких-либо добавленных зависимостей. Было бы нормально требовать зависимости, но как/когда/где все должно работать в протоколе.

<a class="listLoader" href="#list.php?list=1">List 1</a> 
<a class="listLoader" href="#list.php?list=2">List 2</a> 
<a class="listLoader" href="#list.php?list=3">List 3</a> 

.

$('.listLoader').onclick(function() { 
    $.ajax({ 
     'success': function() { 
      //Do what you gotta do with your lists 
     }, 
     'url': location.hash.substring(1) 
    }); 
}); 
Смежные вопросы