在codeigniter中表单而不是发布

时间:2015-10-21 00:19:47

标签: php codeigniter

我在codeignitor中创建了一个表单,每当我尝试提交某些内容时,页面在chrome或firefox中都没有任何内容给我这样的信息:

  

地址不明白

     

Firefox并不知道如何打开这个地址,因为其中一个   以下协议(localhost)与任何程序或任何程序无关   在这种情况下是不允许的。

<?php
$hidden = array('account_id' => '1');
echo form_open('post', '', $hidden); 
         ?>
        <label for="post">Post:</label>
       <input type="text" name="post" id="post"/>
        <br/>
        <input type="submit" value="post" />
        </form> 

在Internet Explorer中,它试图找到一个打开页面的应用程序。

我可以直接访问相同的地址,但在提交表单时我不会让它这样做。

这是表格的代码:

<?php 

class Post extends CI_Controller {

    public function __construct()
            {
                    parent::__construct();
                    $this->load->model('posts_model');
                    $this->load->helper('url_helper');
                    $this->load->helper('form');

            }

    function index() {
        $data['title'] = "posted";
        $this->posts_model->add_post();
        $this->load->view('templates/header', $data);
        $this->load->view('comment/index', $data);
        $this->load->view('templates/footer');

    }



}


?>

这是帖子控制器:

function add_post() {
    $data = array('person_acc_id' => $this-> input -> post('account_id'),
                  'post' => $this -> input -> post('post'),
                  'deleted' => 0,
                  'edited' => 0,
                  'post_time' => date('Y-m-d H:i:s', time()));
    $this -> db -> insert('post', $data);
}

这是posts_model中的函数:

function createLobby(){
  var ses = Parse.Object.extend("Session");
    var query = new Parse.Query(ses);
    var exists = false;
    query.equalTo("sessionName", document.getElementById("lobby").value);
    query.find({
    success: function(results) {
      console.log("Successfully retrieved " + results.length );
      if(results.length!=0){
        alert("Session already exists");
        exists = true;
      }
    },
    error: function(error) {
      alert("Error: " + error.code + " " + error.message);
    }
  });  
  if(exists==false){
      session.set("sessionName",document.getElementById("lobby").value);
      var Players = Parse.Object.extend("Player");
      var query = new Parse.Query(Players);
      query.equalTo("Name", "testName");
      query.find({

      success: function(results) {
        var query2 = new Parse.Query(Players);
        query2.get(results[0].id, {
          success: function(k) {
            console.log(k);
            session.add("Players", k);
           },
           error: function(object, error) {
              // The object was not retrieved successfully.
              // error is a Parse.Error with an error code and message.
            }
      });
      },
      error: function(error) {
        alert("Error: " + error.code + " " + error.message);
      }
      });  

      session.save(null, {
       success: function(object) {
         $(".success").show();
       },
       error: function(model, error) {
        $(".error").show();
       }
      }); 
  }
}  

3 个答案:

答案 0 :(得分:1)

  

实际上你没有设置任何方法来形成。表示您的form操作错误

function index() 中调用视图。那么它的负载from就在那里。因此,如果我点击表单提交<form>,请转到 POST Controller 。因此再次执行 function index()。这将像循环一样运行直到您修复它。

所以你需要做的就是。

在控制器中创建新方法以接收数据

public function validate_form()
{
  #your Form validate Code goes here
}

在视图中 <form>应为

echo form_open('post/validate_form', '', $hidden);

这就像

<form method="post" accept-charset="utf-8" action="http:/example.com/index.php/post/validate_form" account_id="1" />

了解Form Validation

答案 1 :(得分:1)

只需检查application/config中的config.php,然后按以下方式更改您的链接:

$config['base_url'] = 'http://localhost/yourApp/';

我猜你之前的价值是这样的:

$config['base_url'] = 'localhost/yourApp/';

答案 2 :(得分:0)

我的代码实际上很好。一旦我把它放在真正的服务器上它就可以了。它不适用于localhost。