2017-02-21 57 views
0

我正在創建一個php應用程序。在用戶更改日期選擇器的值時,他會被要求確認。如果他確認,id字段和archive_expiry字段中的日期將被更改。現在我從控制器得到這兩個字段的正確json響應,並且expiry字段中的值正在改變。但第二個字段只顯示一次更新的值。所有其他時間,數據庫中發生的更改都會在我發出警報時獲得正確響應,但archive_expiry div不會使用正確的值進行刷新。我正在使用的代碼如下所示基於ajax響應在PHP中刷新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)不刷新更新的值。

+0

使用'的document.getElementById( 「archive_expiry」) .innerHTML = a;'獲取更新值 –

+0

Thanks @ Deep3015它工作正常.. –

回答

1

您應該使用的.html()在這種情況下:如果使用內'單引號

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

您正在使用錯誤的報價var a =url:'projectId'

使用"雙引號和使用轉義如果雙引號內有雙引號,則爲"\""

我希望它能幫助

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; 

解決問題