2016-08-25 9 views
3

Итак, у меня есть этот локальный файл с именем data.js, содержащий различные данные.Как обновить страницу при изменении моего файла данных js

var json={ 
 
    'city': 'madrid', 
 
    'zip':'21212', 
 
    'street':'bergstrasse', 
 
    'house':'15', 
 

 
}; 
 
for(key in json) 
 
{ 
 
    if(json.hasOwnProperty(key)) 
 
    $('input[name='+key+']').val(json[key]); 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 

 
<form action="options.php" method="post" > 
 

 
<input type="text" name="city" placeholder="stadt" > 
 
<br> 
 
<input type="text" name="zip" placeholder="zip" > 
 
<br> 
 
<input type="text" name="street" placeholder="straße" > 
 
<br> 
 
<input type="text" name="house" placeholder="hausnummer" > 
 
<br> 
 
<input type="submit" value="speichern" name="saves"></input> 
 

 

 
</form> 
 

 
    <script src="data.js"></script>

Я хочу, чтобы обновить мою страницу только тогда, когда некоторые данные изменения JS файлов. Цените свою помощь, если вы можете объяснить мне немного кода. Я искал по всему Интернету, я не мог найти подходящий ответ.

+2

Шаг 1: отдельные данные и логика. Шаг 2. Фактически «получить» файл данных (с помощью 'jQuery.get()' или 'jQuery.ajax()'. Шаг 3. Сравните полученные данные с вашими предыдущими данными и решите, что с ними делать (сбросить/обновить страница). –

+0

@ mpf82 абсолютно прав, лучший способ, вероятно, сделать вызов AJAX в цикле, как setInterval(), а затем сравнить новые данные по сравнению с старыми, а если он отличается, обновите div, содержащий данные (но не вся страница imho). Вы можете использовать функцию redraw() для предварительной настройки изменений содержимого HTML элемента data-div, например. – Aethyn

ответ

0

Давайте сломаем это. Вы хотите:

  • проверить что-то периодически
  • вещь, которую вы хотите проверить, является удаленный файл
  • Если оно изменилось вы хотите принять меры

Как уже упоминалось в комментариях , есть способы сделать все вышеперечисленное в Javascript. адрес

Сначала давайте проверять что-то периодически вы можете либо использовать рекурсивный setTimeout петлю или setInterval:

function waitOneSecond = function() { 
    setTimeout(function() { 
     check(); // will get to this in a second 
     waitOneSecond(); 
    }, 1000); // 1000 = one second 
}); 

function checkEverySecond() { 
    setInterval(function() { 
     check(); 
    }, 1000); // 1000 = one second 

Далее, нам нужен способ, чтобы проверить, изменился ли файл. Фактическая «изменила ли она часть» зависит от вас (вы можете захотеть использовать для нее такую ​​функцию, как Underscore или Lodash's _.isEqual), но для этого вам понадобится получить последнюю версию файла JSON. К счастью, JQuery есть способ делать именно это: getJSON:

function check() { 
    $.getJson('http://yourserver.com/data.js').done(function(json) { 
     if (didChange(json)) {// use _.isEqual to write your didChange 
      takeAction(); 
     } 
    }); 
} 

Как вы можете видеть, этот последний пример также охватывает принимать меры, но опять же я оставлю определение функции takeAction к вам.

Смежные вопросы