У меня есть php-скрипт, который получает последнее твист конкретных пользователей в формате JSON. JSON анализируется на функцию AJAX, которая отображает последний твит в ID на странице. Таймер устанавливается на каждые x секунд для выполнения вышеизложенного, получения последнего твита без необходимости обновления страницы. Это прекрасно работает.
Теперь я пытаюсь создать функцию уведомления, которая отображает уведомление, когда будет отображаться новый твит. Каждый твит имеет уникальный идентификатор, называемый «id_string» в извлеченном JSON. То, что я хочу сделать, – это как-то сохранить генерируемое значение id_string, а затем каждый раз, когда запрос делается для получения нового твита, проверьте новый «id_string» на сохраненный, а если он отличается, то отобразите уведомление.
Любые идеи о том, как это сделать, были бы замечательными ?! Я просмотрел локальное хранилище, но я не очень хорошо разбираюсь в этом, и насколько мне известно, вы не можете проверять строки против других строк в локальном хранилище.
Вот необходимый код, который поможет в интерпретации моего вопроса:
PHP, чтобы сделать запрос на twitter и генерировать выходные данные в формате JSON (tweets.php):
require_once('config/FrameFunctions.php'); $output = array(); foreach ($tweeters as $i => $tweeter){ $theTweeter = new Tweeter($tweeter, $tmhOAuth); $allinfo = $theTweeter->getTweets(); $output[$i] = $allinfo; } header("Content-type: application/json"); echo json_encode($output);
Javascript, чтобы сделать запрос каждые х секунд и генерировать вывод клиента:
$(document).ready(function() { $('.fancybox').fancybox(); /* * call ajax function and update latest */ var refreshTweets = function() { console.log("updating.."); $.ajax({url:"tweets.php",success:function(result){ tweets = eval(result); for(i=0;i<tweets.length;i++){ $("#latesttweet"+(i+1)).html( tweets[i][0].user.name + ": " + tweets[i][0].text ); } }}); } refreshTweets(); //set the time in milliseconds here for each refresh setInterval(refreshTweets , 30000); //Interval });
вот решение, основанное на моих комментариях выше
/* NOTE : allTweets will have to be populated with all the tweets ids on the page prior to being called in refreshTweets so that it does not trigger fake notifications */ var allTweets = Array(); $(document).ready(function() { $('.fancybox').fancybox(); /* * call ajax function and update latest */ var refreshTweets = function() { console.log("updating.."); $.ajax({url:"tweets.php",success:function(result){ tweets = result; for(i=0;i<tweets.length;i++) { //check if its a new tweet or not if (allTweets[tweets[i][0].id_string] === undefined) { allTweets[tweets[i][0].id_string] = 1; //trigger notification here! } $("#latesttweet"+(i+1)).html( tweets[i][0].user.name + ": " + tweets[i][0].text ); } }}); } refreshTweets(); //set the time in milliseconds here for each refresh setInterval(refreshTweets , 30000); //Interval });
Я хочу прокомментировать с другими, но я думаю, что я слишком новичок.
В любом случае, если вы не храните конфиденциальную информацию, вы можете хранить свои данные в JSON, которые могут быть быстро записаны и прочитаны PHP для файлов меньшего размера. Если вы храните много данных, вам может потребоваться сохранить значения в базе данных MySQL или что-то подобное.
Настройка базы данных JSON и баз данных MySQL, по-видимому, действительно хорошо документирована здесь.