jQuery $.post update not working in IE

2019-01-28 05:22发布

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!"}

9条回答
迷人小祖宗
2楼-- · 2019-01-28 05:51

At this point in the process I would set up a server side log and see what IE is actually posting and if it was actually posting anything, not much of a code hint but the code looks good to me.

查看更多
淡お忘
3楼-- · 2019-01-28 05:51

I recommend using link text with turned on parameter value capturing for post mortem debugging. It is free so give it a try.

查看更多
干净又极端
4楼-- · 2019-01-28 05:51

For debugging problems like these make sure you get some information about the error back. IE tends to be silent when something goes wrong, but there is a way to get an error back:

$.post("update.php",{data:"blabla"},function(){
  /*... stuff to do on success...*/
},"json").fail(function(XMLHttpRequest,textStatus,errorThrown){
  /*... display the errors here so you know what is wrong...*/
  alert(textStatus+": "+errorThrown);
});

At least you know what's wrong and you can start searching more effectively for the right solution.

查看更多
登录 后发表回答