Hi all, So I have a simple script which essentially uses .replaceWith() to replace the containing elements HTML with a success callback. This works fine the first time I invoke a function which calls .replaceWith() in the success call back, but any subsequent calls leaves the DOM unmodified.
Here's an example screenshot of what my page looks like upon a random page load. http://catalyst.httpd.org/tmp/1.png Ok so I have 4 notes. Let's delete one: http://catalyst.httpd.org/tmp/2.png Perfect, it's gone: http://catalyst.httpd.org/tmp/3.png Here's where the problem occurs... Let's delete another http://catalyst.httpd.org/tmp/4.png Hmmm, it didn't disappear from the DOM this time: http://catalyst.httpd.org/tmp/5.png The OB/GYN note is still there as rendered by the browser, however the server-side script surely wiped it: mysql> select id,name from ms_notes where id="CN"; Empty set (0.00 sec) Here's what my code looks like to remove the note: function removeNote(id,name) { if(confirm("Are you sure you wish to delete: "+name+"?")) { // ajax code here to remove note. $.ajax({ url: "/dbserver.php", type: "POST", data: "delete="+id, cache: false, success: function(html) { $("#alpha_notes").empty(); $("#alpha_notes").replaceWith(html); } }); } } Very important thing to factor in, is if I do a hard refresh on the page, here are the results... a missing OB/GYN note, which is the way it should be: http://catalyst.httpd.org/tmp/6.png Any idea folks? Would really appreciate any help. Firebug also shows that in its response to my POST call that the notes are not there in its table rendering. My server-side code looks like this: if($_POST['delete']) { global $db_alpha, $link; $alpha_note_set = array(); $db = mysql_select_db($db_alpha, $link); if(!$db) { die("Can't connect to alpha, please contact steve."); } $sql = "DELETE from ms_notes WHERE ID='".$_POST['delete'] ."' LIMIT 1"; $result=''; $result = mysql_query("$sql"); if(!$result) { die("Something is broken... "); } $sql = "SELECT NAME,ID from ms_notes"; $alpha_result_set = @mysql_query("$sql"); $row=''; if(mysql_num_rows($alpha_result_set)==0) { $html = "There are zero notes left to process in Alpha's database"; echo $html; exit; } while($row = @mysql_fetch_array($alpha_result_set, MYSQL_ASSOC)) { $alpha_note_set[] = $row; } $html=''; $html = '<table>'; $html .= '<tr>'; // count here basically just keeps track of a // neatly aligned table $count=0; foreach($alpha_note_set as $note) { $html .= "<td><a href=\"javascript:void(0);\" onclick=\"removeNote('".$note[ID]."','".$note[NAME]."')\">delete</a> $note[NAME]</td>"; $count++; if(($count % 2 == 0)) { $html .= "</tr><tr>"; } } $html .= '</tr></table>'; // send this sucker back to the view. echo $html; } Thanks all. - sf