根据ajax响应刷新php中的div

时间:2017-02-21 08:10:49

标签: javascript php jquery html ajax

我正在创建一个php应用程序。当用户更改日期选择器的值时,他将要求确认。如果他确认,将更改id expiry和archive_expiry字段中的日期。现在我从控制器获得这两个字段的正确json响应,并且到期字段中的值正在改变。但第二个字段仅显示更新的值一次。所有其他时间,当我发出警报时,db中发生的更改将作为正确的响应,但archive_expiry div没有使用正确的值刷新。我正在使用的代码如下所示

<div class="controls input-append date form_date " data-date="" data-date-format="dd MM yyyy" data-link-field="dtp_input2" data-link-format="yyyy/mm/dd">
  <span class="add-on"><?php echo $this->Form->input('expiry', array('size' => 12, 'type' => 'text', 'id' => 'expiry', 'onchange' => 'confirmChange()', 'value' => __(date("Y/m/d", strtotime($project['expiry']))), 'readonly' => true, 'style' => 'border:1px solid #fff', 'label' => false)) ?></span>
  <span class="add-on" style="background-color:#eeeeee; border:1px solid #ccc;"><i class="icon-th"></i></span>
  <input type="hidden" id="dtp_input2" value="" />
</div>

<div id="archiveExpiry">
  <?php echo (date("Y/m/d", strtotime($project['archive_expiry']) )) ?>
</div>

<script language="JavaScript" type="text/javascript">
  var a = '<?php echo (!empty($project['
  expiry '])) ? date("Y/m/d",    strtotime($project['
  expiry '])) : null; ?>';

  function confirmChange() {
    var r = confirm("公開期限を更新しますか?");
    if (r === true) {
      changeDeliveryDeadLine();
    } else {
      document.getElementById("expiry").value = a;
    }
  }
</script>

<script language="JavaScript" type="text/javascript">
  function changeDeliveryDeadLine() {
    var expiry = $('#dtp_input2').val();
    if (expiry !== '') {
      $.ajax({
        type: "POST",
        url: '<?php echo $this->Url->build(['action' => 'changeDeliveyDeadLine']) ?>',
        data: {
          'expiry': expiry,
          'projectId': '<?php echo (!empty($project['id'])) ? $project['id '] : null; ?>'
        },
        datatype: 'json',
        success: function(out) {
          a = out.result;
          b = out.archive;
          document.getElementById("expiry").value = a;
          $('#archiveExpiry').replaceWith(b);
        }
      });
    }
  }
</script>

为什么第二个div(archive_expiry)没有刷新更新的值。

3 个答案:

答案 0 :(得分:1)

在这种情况下你应该使用.html():

$('#archiveExpiry').html(b);

答案 1 :(得分:0)

您对var a =url:'projectId'

使用了错误的引号

如果在内部使用"单引号,请使用'双引号,如果在双引号内使用双引号,请使用转义"\""

我希望它有所帮助

答案 2 :(得分:0)

当我更换代码时

success: function(out) {
      a = out.result;
      b = out.archive;
      document.getElementById("expiry").value = a;
      $('#archiveExpiry').replaceWith(b);
    }

代码

 a = out.result;
      b = out.archive;         
      document.getElementById("expiry").value = a; 
      document.getElementById("archiveExpiry").innerHTML = b; 

解决问题