dot
dot

Reputation: 15700

POST data not being set? Codeigniter solution

I think I have a simple bug somewhere but I can't see it! In my view, I have the following javascript to create a form:

  $.ajax({
    url:"<?php echo site_url('mycontroller/methodX/'.$ip.'/'.$hardwaremodel);?>",
    type:'POST',
    dataType:'json',
    success: function(returnDataFromController) {
    var htmlstring;
    var submitFormHTML;
    htmlstring = "<br><br><B>To reassign the port to a new vlan, click on a VlanId below and then click on the OK button</B><br><table class='table table-bordered table-striped'>";
    htmlstring = htmlstring + "<th>VlanId</th><th>Name</th>";
    for(i = 0; i < returnDataFromController.length; i++) {

    }
    submitFormHTML = "<form method='post' accept-charset='utf-8' action='/myapp/index.php/controllerABC/methodABC/"+ $('#ip').val() +"/" + $('#hardwaremodel').val() +"/" + $('#port').val() + "'><input type='text' id='newVlanID' style='width:5em;height:1.5em'/>&nbsp;&nbsp;<button type='submit' class='btn' id='saveVlan' style='width:10em;height:2em'>Reassign Vlan</button></form>";
    //alert(submitFormHTML);
    $('#clientajaxcontainer').html(htmlstring);
    $('#newvlanform').html(submitFormHTML);

It's the "submitFormHTML" string that builds the form.

And in my controller I have the following logic to check for the input: public function methodABC() {

     if($_POST){
         echo 'I am here';
         $form = $this->input->post();
         var_dump($form);
         exit();
     }
     else {
         echo "false";
     }

It always print the "false". I've also tried using:

print_r($this->input->post());

and

    echo $this->input->post('newID');

But I can't seem to get the data from my view into the controller. Can you see where I'm going wrong? Thanks for the help.

Edit:

The page when rendered, creates the following HTML for the form:

<form method="post" action="/myapp/index.php/switches/changeportvlan/11.11.11.11 /">
<input type='text' id='newVlanID' style='width:5em;height:1.5em'/>&nbsp;&nbsp;
<button type="submit" class='btn' id='saveVlan' style='width:10em;height:2em'>Reassign Vlan</button>
</form>"

Upvotes: 0

Views: 317

Answers (2)

dot
dot

Reputation: 15700

The problem was that the textbox is missing a "name" attribute. "id" is not enough!

Upvotes: 3

David
David

Reputation: 3821

You need

if ($this->input->post(Null, False)) {
   echo "I am here";
   $form = $this->input->post(Null, True); ## True for XSS-cleaning, which you probably want.
   exit();
}
else {
   echo "False";
}

You have to give $this->input->post() arguments. Moreover, never use $_POST in CodeIgniter.

Good luck

Upvotes: 0

Related Questions