我正在创建一个 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/