I can't get this update script to work in IE. Works fine in every other browser. IE tells me that the update was performed. However, it wasn't. I've no more hair left to pull out..grr. BTW I've tried $.ajax
and $.get
too..still no luck. I'm thinking it may have something to do with the live
click handler. Don't know...I've tried everything..(putting headers for no-cache, attaching a random number to the end of my url string)..nothing fricken works...blasted IE.
This is the $('.save').live('click')
function I am using:
$(".save").live("click", function(){
$.post("update.php", { cache : false, saveID : saveIt.value, saveMo : saveMonth, saveYr : saveYear, saveCtg : saveCt, saveThg : saveTh },
function(data){
if(data.success) {
$(textareaThoughts).hide();
$(saveIt).parents(".dirRowOne").find(".cancel").hide();
$(saveIt).parents(".dirRowOne").find(".edit, .del").show();
$(saveIt).hide();
$("#dirConsole").html(data.message);
} else if(data.error) {
}
}, "json");
return false;
});
Here's the update.php
<?php
if($_POST) {
$data['id'] = $db->escape_value($_POST['saveID']);
$data['months'] = trim($db->escape_value($_POST['saveMo']));
$data['years'] = trim($db->escape_value($_POST['saveYr']));
$data['cottages'] = trim($db->escape_value($_POST['saveCtg']));
$data['thoughts'] = trim(htmlentities($db->escape_value($_POST['saveThg'])));
$id = $data['id'];
$m = $data['months'];
$y = $data['years'];
$c = $data['cottages'];
$t = $data['thoughts'];
$query = "UPDATE //tablename SET month = '{$m}', year = '{$y}', cottage = '{$c}', thoughts = '{$t}' WHERE dirID = '{$id}'";
$result = $db->query($query);
if($result) {
$data['success'] = true;
$data['message'] = "Update Successful!";
} else {
$data['error'] = true;
}
echo json_encode($data);
}
?>
This is the JSON response:
{"id":"360","months":"June","years":"1990","cottages":"Cedar","thoughts":"Hello","success":true,"message":"Update Successful!"}
I agree with the answer above. I've seen IE flake with AJAX requests, both GET and POST, when a cache-busting string is not used. Just append a random cache busting string to your URL like so:
$.post("update.php?ts="+new Date().getMilliseconds(), { cache : false, saveID : saveIt.value, saveMo : saveMonth, saveYr : saveYear, saveCtg : saveCt, saveThg : saveTh },
function(data){
...
and it should just start working in IE.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With