2016-07-01 2 views
1

Я попытался отправить данные формы через TinyMCE, но скрипт отправляет старое значение, а не новое. Код формы:GetElementByID с textarea

<form> 
    <textarea id="tml" name="template_content" class="editor_large">{$template_content|escape}</textarea> 
</form> 

<input class="button_green button_save" type="button" name="save" value="Save" /> 

JS код:

$(function() { 
    // Saving AJAX code 
    function save() 
    { 
     $('#tml').css('background-color','#e0ffe0'); 
content=document.getElementById("tml").innerHTML   
     $.ajax({ 
      type: 'POST', 
      url: 'ajax/save_template.php', 
      data: {'content': content, 'theme':'{/literal}{$theme}{literal}', 'template': '{/literal}{$template_file}{literal}', 'session_id': '{/literal}{$smarty.session.id}{literal}'}, 
      success: function(data){ 

       $('#tml').animate({'background-color': '#000000'}); 
      }, 
      dataType: 'json' 
     }); 
    } 

    // Press Save 
    $('input[name="save"]').click(function() { 
     save(); 
    }); 

    // ctrl+s 
    var isCtrl = false; 
    var isCmd = false; 
    $(document).keyup(function (e) { 
     if(e.which == 17) isCtrl=false; 
     if(e.which == 91) isCmd=false; 
    }).keydown(function (e) { 
     if(e.which == 17) isCtrl=true; 
     if(e.which == 91) isCmd=true; 
     if(e.which == 83 && (isCtrl || isCmd)) { 
      save(); 
      e.preventDefault(); 
     } 
    }); 
}); 

Как я думаю, мой сценарий должен также изменить цвет с помощью CSS, но и в штрафной. Save_template.php файл:

<?php 

session_start(); 

chdir('../..'); 
require_once('api/Simpla.php'); 

$simpla = new Simpla(); 

if(!$simpla->managers->access('design')) 
    return false; 

// Проверка сессии для защиты от xss 
if(!$simpla->request->check_session()) 
{ 
    trigger_error('Session expired', E_USER_WARNING); 
    exit(); 
} 
$content = $simpla->request->post('content'); 
$template = $simpla->request->post('template'); 
$theme = $simpla->request->post('theme', 'string'); 

if(pathinfo($template, PATHINFO_EXTENSION) != 'tpl') 
    exit(); 

$file = $simpla->config->root_dir.'design/'.$theme.'/html/'.$template; 
if(is_file($file) && is_writable($file) && !is_file($simpla->config->root_dir.'design/'.$theme.'/locked')) 
    file_put_contents($file, $content); 

$result= true; 
header("Content-type: application/json; charset=UTF-8"); 
header("Cache-Control: must-revalidate"); 
header("Pragma: no-cache"); 
header("Expires: -1");  
$json = json_encode($result); 
print $json; 

На мой взгляд, проблема скрывается в GetElementByID

+0

Вы можете использовать jQuery, чтобы получить значение элемента: '$ (" # tml "). val()' - нет причин обращаться к API-интерфейсу браузера, если вы уже используете библиотеку. – Pointy

+0

отсутствует как var, так и точка с запятой. –

ответ

6

Это потому, что innerHTML свойство не изменяется при вводе в текстовое поле, то value делает

var content = document.getElementById("tml").value; 

или с jQuery

var content = $("#tml").val(); 
Смежные вопросы