Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从PHP帖子中获取下拉列表的选定索引_Php_Jquery_Forms_Tinymce_Drop Down Menu - Fatal编程技术网

如何从PHP帖子中获取下拉列表的选定索引

如何从PHP帖子中获取下拉列表的选定索引,php,jquery,forms,tinymce,drop-down-menu,Php,Jquery,Forms,Tinymce,Drop Down Menu,我有一个HTML表单,它包含一个下拉列表、一个tinyMCE文本区域和一个保存按钮。 下拉列表用于选择要编辑的文件 当下拉菜单触发jquerychange()事件时,我通过发出ajax调用将所需文件加载到tinyMCE编辑器中。那很好 我遇到的问题是保存文件。我正试图通过将表单发布到另一个php页面,该页面将写入该文件,然后将我们发送回主页 这是我的writeFile.php页面中的php代码: <?php session_start(); if (!isset($_SESSION['id

我有一个HTML表单,它包含一个下拉列表、一个tinyMCE文本区域和一个保存按钮。 下拉列表用于选择要编辑的文件

当下拉菜单触发jquery
change()
事件时,我通过发出ajax调用将所需文件加载到tinyMCE编辑器中。那很好

我遇到的问题是保存文件。我正试图通过将表单发布到另一个php页面,该页面将写入该文件,然后将我们发送回主页

这是我的writeFile.php页面中的php代码:

<?php
session_start();
if (!isset($_SESSION['id'])) {
    header ('Location: index.php?error=0');
}
else {
      if (isset($_POST['save'])) {
      $text = $_POST['mceContent'];
      $index = $_POST['files']; // << PROBLEM LINE!
      $array = array('homeText.txt', 'anotherText.txt');
      $fileName = $array[$index];
      $path = '../txt/'.$fileName;
      $length = strlen($text);
      echo "INDEX: $index"; // TO TEST THE INDEX VARIABLE.
      $fh = fopen($text,'w',true);
      fwrite($fh,$text,$length) or die('Could not write');
      fclose($fh);
      header ('Location: admin.php');
  }
}
?>

$index变量是指下拉列表中选定的索引,但是我的表单将其作为下拉列表中选定的字符串值发布

我可以想出三种解决方案(从最不可能奏效到最有可能奏效)

  • 有什么方法可以从那篇php文章中获取索引
  • 我可以在HTML表单/select标记中进行更改,告诉它发布索引,而不是值字符串
  • 我通过单击将其更改为jquery事件,并使用xhr手动将索引传递给post
  • 如果有人能帮我实现这些方法中的一种,那就太好了。 如果你有自己更好的解决方案,我也很高兴听到你这么说

    还要注意,我不能从值字符串构建路径,因为我的下拉列表使用描述性字符串,而不是实际的文件名


    提前感谢,请记住我是php新手,尤其是jquery。

    我不知道为什么不能使用value属性-描述性字符串将是
    选项的文本部分,要保存的文件名可以是值:

    <option value="path/to/file_to_save.php">Descriptive file name</option>
    
    Javascript代码片段

    <form onsubmit="return beforeSubmit()">
        <input type="hidden" name="file_index" value="" id="file_index_fld" />
        <select id="file_name_dropdown">
         <option>...</option>
    
    var beforeSubmit = function () {
      $('#file_index_fld').val($('#file_name_dropdown').attr("selectedIndex"));
      return true;
    }
    
    。。。现在在PHP的
    $\u POST
    变量中,您将看到
    $\u POST['file\u index']
    包含
    select
    元素的selectedIndex


    它的长短之处在于
    selectedIndex
    属性是一个DOM项,而不是POST数据的一部分。不管怎样,您要么必须使用javascript将数据添加到POST,要么修改您的选项元素以传递所需的数据。我总是倾向于前一条路线,因为它不那么复杂。

    我能想到的另一个选择是:在发布之前,在
    更改事件中捕获新索引,并将其写入表单的隐藏输入字段。在那之后,你可以用jQuery发布它。

    谢谢-这太明显了,我真是个白痴,因为我没有想到这一点,我不知道它与选项标签一起工作。