jQuery的$。员额更新IE中不工作(jQuery $.post update not worki

2019-07-22 01:23发布

我不能得到这个更新脚本在IE工作。 在其他浏览器工作正常。 IE告诉我,进行了更新。 然而,事实并非如此。 我没有更多的头发留下来拉out..grr。 BTW我已经试过$.ajax$.get too..still没有运气。 我想它可能有一些做的live单击处理程序。 不知道......我用尽了一切。(把标头无缓存,附加一个随机数到我的URL字符串的结尾)..没有fricken作品...炸开IE。

这是$('.save').live('click')功能,我使用:

$(".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;
});

这里的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);

 }


?>

这是JSON响应:

{"id":"360","months":"June","years":"1990","cottages":"Cedar","thoughts":"Hello","success":true,"message":"Update Successful!"}

Answer 1:

我同意上面的答案。 我已经看到了IE与片状AJAX请求,GET和POST,当不使用缓存无效的字符串。 只需添加一个随机的缓存清除字符串到您的网址如下所示:

    $.post("update.php?ts="+new Date().getMilliseconds(), { cache : false, saveID : saveIt.value, saveMo : saveMonth, saveYr : saveYear, saveCtg : saveCt, saveThg : saveTh },
      function(data){
...

它应该只是开始在IE工作。



Answer 2:

最后! 我解决了我的问题,就是因为“同源策略”,只是在IE中提高!:我刚刚更改网址参数:“http://mysite.com/api/”“/ API /”,它作品!!!

希望这有助于一些你!



Answer 3:

你有没有试图消除“返回false”。 这似乎取消IE浏览器的onclick事件。



Answer 4:

这使我首先想到的事情是AJAX请求缓存问题。 试着在后面加上一个随机值(使用的Math.random()或任何你想)到POST请求,并看看会发生什么。 我始终添加一个随机值GET请求,以确保反应是唯一的,但我不知道怎么样了POST请求。

还检查了这个链接,看看它的任何适用: http://greenash.net.au/posts/thoughts/an-ie-ajax-gotcha-page-caching



Answer 5:

在过程中的这一点,我将建立一个服务器端的日志,看看IE实际上是张贴,如果它实际上是张贴任何东西,没有太多的代码提示,但代码看起来不错。



Answer 6:

我建议使用链接文本与开启的参数值获取的验尸调试。 它是免费的,所以给它一个尝试。



Answer 7:

你是否尝试过使用基本阿贾克斯方法,而不是抽象后?

http://docs.jquery.com/Ajax/jQuery.ajax#options

也许这不是检测用POST方法的数据类型。

下面是一个完整的Ajax调用,对我的作品:

$.ajax({
    type: "POST",
    url: "content_admin.asmx/UpdateFolderDocumentOwner",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: '{documentID:' + $("#did").val() + '}',
    error: handleJsonError,
    success: function() {

    }
});  


Answer 8:

更改

<meta http-equiv="content-type" content="text/html;charset=utf-8">

<meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

为我工作。



Answer 9:

为了调试这样的问题,确保您获得有关该错误的一些信息反馈。 IE浏览器往往是沉默的时候出了问题,但有一种方式来获得回错误:

$.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);
});

至少你知道什么是错的,你就可以开始了合适的解决方案更有效地搜索。



文章来源: jQuery $.post update not working in IE