javascript - 根据ajax响应刷新php中的div

标签 javascript php jquery html ajax

我正在创建一个 PHP 应用程序。当用户更改日期选择器的值时,他将被要求确认。如果他确认,则 id expiry 和 archive_expiry 字段中的日期将被更改。现在我从 Controller 获得了这两个字段的正确 json 响应,并且到期字段中的值正在更改。但第二个字段仅显示更新值一次。所有其他时候,当我发出警报时,数据库中发生的更改都会得到正确的响应,但 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) 没有使用更新后的值刷新。

最佳答案

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

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

关于javascript - 根据ajax响应刷新php中的div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42361854/

相关文章:

php - var_dump 报告错误的字符串长度是什么意思?

javascript - 使用 jQuery 加载脚本

javascript - 我可以从其他页面加载表单吗?

javascript - 如何在 HTML5 中自动播放 Brightcove 视频播放列表

javascript - 如何在 Rails 中实现字计数器?

php - 找不到 Laravel API

javascript - 使用 AJAX 和 PHP 和 Javascript 自动填充输入文本框

jquery - 顶部和底部边框突出显示的垂直列表

javascript - window.onload 何时被触发?

javascript - 尝试更改/匹配 JSON 对象