表单数据不是通过POST发送的,而是通过PHP中的GET工作

时间:2014-08-30 06:31:02

标签: php forms post

这很奇怪。我尝试了一切。我认为这里没有明显的问题。想一想,你们中的任何一方都可以帮助我解决这个问题。我被困在这里。

当我按下面表格中的提交按钮时,不会发送任何数据。我确信我没有错过name属性,但我完全不明白这个问题。

var_dump($_POST)

阵列   空

此错误最有趣的部分是,如果我将方法设置为GET,则传递值。

var_dump($_GET);

GET方法结果:

array
  'song_file' => string '19 Jillian.m4a' (length=14)
  'song_name' => string 'Jillian' (length=7)
  'singer_name' => 
    array
      0 => string 'Heitor Pereira' (length=14)
      1 => string '' (length=0)
      2 => string '' (length=0)
      3 => string '' (length=0)
      4 => string '' (length=0)
      5 => string '' (length=0)
  'lang' => 
    array
      0 => string '2' (length=1)
  'allow_downloading' => string 'yes' (length=3)
  'add_song' => string 'Add' (length=3)

表格代码如下。在这里,我尝试了post方法。

<form class="form" action="" enctype="multipart/form-data" method="post">
  <fieldset>
    <div class="row">
      <label class="label" for="song-file">Please select a track to upload*</label>
      <input id="song-file" name="song_file" class="field" type="file" />
    </div>
    <div class="row">
      <label class="label" for="song-name">Song Name :</label>
      <input id="song-name" name="song_name" class="field" type="text" size="42" />
    </div>
    <div class="row">
      <label class="label">Artists :</label>
      <div class="field-row">
        <input name="singer_name[]" class="field" type="text" size="25" />
        <input name="singer_name[]" class="field" type="text" size="25" />
      </div>
      <div class="field-row">
        <input name="singer_name[]" class="field" type="text" size="25" />
        <input name="singer_name[]" class="field" type="text" size="25" />
      </div>
      <div class="field-row">
        <input name="singer_name[]" class="field" type="text" size="25" />
        <input name="singer_name[]" class="field" type="text" size="25" />
      </div>
    </div>
    <div class="row">
      <label class="label" for="allow-downloading"> Allow Downloading</label>
      <select name="allow_downloading" class="dropdown">
        <option value="yes">Yes</option>
        <option value="no">No</option>
      </select>
    </div>
    <input type="submit" name="add_song" value="Add" class="btn" style="float:none;" />
  </fieldset>
</form>

根据建议,这是我的PHP代码片段,此表单使用:

P.S。我在后端使用Code Igniter。所有其他形式都运作良好,期待这个。

class Song extends CI_Controller {

    public function add($album_id){

        if($_POST){
            var_dump($_POST);
        }

        $this->load->view('album/form.php');
    }
}

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

  1. 可能你有一些JS提交处理程序,例如,它阻止默认提交操作,收集所有表单数据并通过ajax用GET方法发送它?

  2. 可能是CodeIgniter对POST数据做了一些魔术。要知道它确保在CodeIgniter核心初始化之前转储$ _POST数组。