Размещение значения текстовой области с помощью jquery - PullRequest
0 голосов
/ 03 октября 2010

Я ищу (правильный) способ чтения и записи в текстовый файл linux с javascript, jQuery и php.В частности, я хочу взять значение (#taFile) с помощью jQuery ($ ("# taFile"). Val ();) и $ .post его в скрипт php, который, в свою очередь, записывает опубликованное значение в текстfile.

Хотя мой код в основном работает, я наткнулся на загадку: при получении значения textarea и $ .posting, все специальные символы теряются.В частности, 1) все специальные символы теряются, 2) новые строки преобразуются в пробелы и 3) все символы после определенных специальных символов (я заметил, что это произошло с #) теряются.

Этовсе еще черновики сценария, однако я очень открыт для любых улучшений и предложений!

Javascript:

$(document).ready(function() {
 $("input:button").button();
 $("#tabs").tabs();

 $("#tabs").tabs({
  select: function(event, ui) { // When a tab is selected
   file = ui.panel.id;
   console.log("js: file: "+file);
   if (file == "items" || file == "groups" || file == "whitelist" || file == "users"){ // if file is valid
    $("#taFile").remove(); // Remove any old textareas
    $("#"+file).html(''); // Add a new textarea
    $.post("/php/getFile.php?action=read&file="+file, function(data){ // Post with the current file
     $("#taFile").val(data); // Put file into textarea
    });
   }
  }
 });

 $("#btnSubmit").click(function() {
  var newcfg = $("#taFile").val();
  alert(newcfg); // This shows that newcfg preserves the exact value of the textarea
  console.log(newcfg); // As does this.
  $.post("/php/getFile.php?action=write&file="+file+"&newcfg="+newcfg); // This shows new lines (\n ?) as " " (a space) and removes all special characters (! , # ; : etc)
 });
});

PHP:

 $file = $_REQUEST['file'];
 $newcfg = $_REQUEST['newcfg'];
 $action = $_REQUEST['action'];
 $user = 'public';
 $config = "/home/$user/mc/$file.txt";

 if ($action == "read"){
  $oldcfg = file_get_contents($config);
  echo $oldcfg;
 } else if ($action == "write") { #if writing
  $fh = fopen($config, 'w') or die("Cant write to file"); #open file
  fwrite($fh, $newcfg); #write file
  fclose($fh); #close file
 }

Мне пришлось удалитьтеги php, поскольку они заставили реальный код PHP не появляться.Не то чтобы некоторые сценарии предназначались для чтения файла в первую очередь при смене вкладок.Это все работает отлично.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 октября 2010

Примечание. Вы используете jQuery.post() и задаете свои данные как $_GET parameters.Он должен называться как;

$.post("/php/getFile.php", { action: "write", file: file, newcfg: newcfg },
   function(data){
     alert("Data Loaded: " + data);
   });

Вы можете сохранить разрывы строк с помощью функции, подобной этой:

function splitter($content) {
$content = str_replace(chr(10),'<br/>',$content);
$content = str_replace("<br/><br/><br/><br/>","<br/><br/>",$content);
return $content;
}

, которую вы выполняете как:

$newcfg = splitter($newcfg);

И Typoknig прямо о специальных символов

0 голосов
/ 03 октября 2010

Возможно, вы захотите проверить PHP htmlentities и htmlspecialcharacters .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...