surveen Posted December 31, 2014 Share Posted December 31, 2014 Hello All, New Year Greetings!! I have integrated a script for TODO list in my website. Its working fine, but adding New task will be appear only after refreshing the page, whereas delete and save are happening as and when i click on them. I dont know where can i make it right. Here is my code Display <div class="w-box-content todo-list"> <ul class="todoList"> <?php require "todo.class.php"; $query = mysql_query("SELECT * FROM `tz_todo` ORDER BY `position` ASC"); $todos = array(); while($row = mysql_fetch_assoc($query)){ $todos[] = new ToDo($row); } foreach($todos as $item){ echo $item; } ?> </ul> <a id="addButton" class="green-button" href="#">Add a ToDo</a> <div id="dialog-confirm" title="Delete TODO Item?">Are you sure you want to delete this TODO item?</div> I am including <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/themes/humanity/jquery-ui.css" type="text/css" media="all" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script type="text/javascript" src="script.js"></script> and in ajax.php require "connect.php"; require "todo.class.php"; $id = (int)$_GET['id']; try{ switch($_GET['action']) { case 'delete': ToDo::delete($id); break; case 'rearrange': ToDo::rearrange($_GET['positions']); break; case 'edit': ToDo::edit($id,$_GET['text']); break; case 'new': ToDo::createNew($_GET['text']); break; } } catch(Exception $e){ // echo $e->getMessage(); die("0"); } echo "1"; Quote Link to comment https://forums.phpfreaks.com/topic/293567-added-data-in-todo-list-is-not-visible-without-refreshing/ Share on other sites More sharing options...
Solution drisate Posted December 31, 2014 Solution Share Posted December 31, 2014 (edited) You can do that from your script.js page. Inside the sucess part of the script, you can add something like: $("#todoList").load( "index.php #todoList"); In order for this to work, add an id attribute to the <ul class="todoList"> like this <ul class="todoList" id="todoList">Then in the code i provided insert the URL of your totdo page at the place of index.php This will fetch the page, retreive the #todoList content and replace it and all that with out refreshing the users page ... only the content will change. Edited December 31, 2014 by drisate 1 Quote Link to comment https://forums.phpfreaks.com/topic/293567-added-data-in-todo-list-is-not-visible-without-refreshing/#findComment-1501346 Share on other sites More sharing options...
surveen Posted December 31, 2014 Author Share Posted December 31, 2014 Hi, I have made changes like this in my script.js $(document).ready(function(){ /* The following code is executed once the DOM is loaded */ $(".todoList").sortable({ axis : 'y', // Only vertical movements allowed containment : 'window', // Constrained by the window update : function(){ // The function is called after the todos are rearranged // The toArray method returns an array with the ids of the todos var arr = $(".todoList").sortable('toArray'); // Striping the todo- prefix of the ids: arr = $.map(arr,function(val,key){ return val.replace('todo-',''); }); // Saving with AJAX $.get('ajax.php',{action:'rearrange',positions:arr}); }, /* Opera fix: */ stop: function(e,ui) { ui.item.css({'top':'0','left':'0'}); } }); // A global variable, holding a jQuery object // containing the current todo item: var currentTODO; // Configuring the delete confirmation dialog $("#dialog-confirm").dialog({ resizable: false, height:130, modal: true, autoOpen:false, buttons: { 'Delete item': function() { $.get("ajax.php",{"action":"delete","id":currentTODO.data('id')},function(msg){ currentTODO.fadeOut('fast'); }) $(this).dialog('close'); }, Cancel: function() { $(this).dialog('close'); } } }); // When a double click occurs, just simulate a click on the edit button: $('.todo').live('dblclick',function(){ $(this).find('a.edit').click(); }); // If any link in the todo is clicked, assign // the todo item to the currentTODO variable for later use. $('.todo a').live('click',function(e){ currentTODO = $(this).closest('.todo'); currentTODO.data('id',currentTODO.attr('id').replace('todo-','')); e.preventDefault(); }); // Listening for a click on a delete button: $('.todo a.delete').live('click',function(){ $("#dialog-confirm").dialog('open'); }); // Listening for a click on a edit button $('.todo a.edit').live('click',function(){ var container = currentTODO.find('.text'); if(!currentTODO.data('origText')) { // Saving the current value of the ToDo so we can // restore it later if the user discards the changes: currentTODO.data('origText',container.text()); } else { // This will block the edit button if the edit box is already open: return false; } $('<input type="text">').val(container.text()).appendTo(container.empty()); // Appending the save and cancel links: container.append( '<div class="editTodo">'+ '<a class="saveChanges" href="#">Save</a> or <a class="discardChanges" href="#">Cancel</a>'+ '</div>' ); }); // The cancel edit link: $('.todo a.discardChanges').live('click',function(){ currentTODO.find('.text') .text(currentTODO.data('origText')) .end() .removeData('origText'); }); // The save changes link: $('.todo a.saveChanges').live('click',function(){ var text = currentTODO.find("input[type=text]").val(); $.get("ajax.php",{'action':'edit','id':currentTODO.data('id'),'text':text}); currentTODO.removeData('origText') .find(".text") .text(text); }); // The Add New ToDo button: var timestamp=0; $('#addButton').click(function(e){ // Only one todo per 5 seconds is allowed: if((new Date()).getTime() - timestamp<3000) return false; $.get("ajax.php",{'action':'new','text':'New Todo Item. Doubleclick to Edit.','rand':Math.random()},function(msg){ // Appending the new todo and fading it into view: $(msg).hide().appendTo('#todoList').fadeIn(); $("#todoList").load( "index.php #todoList"); }); // Updating the timestamp: timestamp = (new Date()).getTime(); e.preventDefault(); }); }); // Closing $(document).ready() and in index.php <ul class="todoList" id="todoList"> But when i click on add, everything goes off , after refreshing it will appear again. Quote Link to comment https://forums.phpfreaks.com/topic/293567-added-data-in-todo-list-is-not-visible-without-refreshing/#findComment-1501350 Share on other sites More sharing options...
surveen Posted December 31, 2014 Author Share Posted December 31, 2014 Sorry ... i got it resolved! thanks you Quote Link to comment https://forums.phpfreaks.com/topic/293567-added-data-in-todo-list-is-not-visible-without-refreshing/#findComment-1501352 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.