2013-06-11 4 views
0

J'ai vu des questions similaires à celui-ci, mais n'a toujours pas trouvé la solution, ce qui gaspille vraiment mon temps :(

Voici mon contrôleur

public function test() { 
    print_r($_POST); 
    return; 
} 

Voir

<?php 
    echo form_open(base_url('go/test'), 'id="update" autocomplete="off" ajax-hidden'); 
    echo form_hidden('id', $id); 
?> 
    <input id="update" name="number" class="spinner" readonly="readonly" 
     value="<?$=value?>"/> 
<?php 
    echo form_close(); 
?> 
.

J'utilise jQuery pour soumettre le formulaire une fois la fileuse jQuery UI est modifiée C'est la réponse:

Array() 
+0

Je dois ajouter que d'autres formes dans le site fonctionnent bien – Sarah

+0

Cette entrée ne semble pas avoir de type, devrait-elle être type = "hidden"? Probablement pas la cause. – somedev

+0

http://stackoverflow.com/questions/14201815/codeigniter-post-data-empty voir et vérifier –

Répondre

1

J'ai oublié que j'ai changé mon gestionnaire ajax pour travailler avec IE et n'a pas changé la fonction ajax pour cette forme particulière, parce que doit être caché la réponse de cette forme, il utilise un autre gestionnaire ajax.

Ceci est ma principale fonction de soumission:

(function($){ 
    jQuery.fn.ajaxFormSubmit = 
     function(container, data) { 
      var url = $(this).attr('action'); 
      $.ajax({ 
        url: url, 
        type: "POST", 
        data: data, 
        dataType: "html", 
        success: function(msg) { 
           $(container).html(msg); 
         } 
        }); 
      return this; 
     }; 
})(jQuery); 

J'utilisé pour sérialiser les données de formulaire dans cette fonction, mais je réalise qu'il ne fonctionne pas pour IE, la seule solution était de sérialiser les données du formulaire avant faire autre chose!

Voici les 2 fonctions que je utilise:

$('form[ajax]').live('submit', function(e){ 
    e.preventDefault(); 
    var data = $(this).serialize(); 
    var container = $(this).attr('cont'); 
    if (typeof container == 'undefined' || container == false) { 
     container = '.#ajax'; 
    } 
    $(container).html('<img src="public/images/ajax.gif"/>'); 
    $(container).fadeIn('fast'); 
    $(this).ajaxFormSubmit(container, data); 
}); 

$('form[ajax-hidden]').live('submit', function(e){ 
    e.preventDefault(); 
    var data = $(this).serialize(); 
    var container = ''; 
    $(this).ajaxFormSubmit(container, data); 
}); 

La deuxième fonction n'a tout simplement pas avoir la variable de données. Alors je l'ai ajouté. J'espère que cela peut aider quelqu'un.

3

Très probablement jQuery n'est pas en mesure d'obtenir une valeur de passer à votre contrôleur parce que vos form et input éléments ont le même id update

également <?$=value?> est une syntaxe incorrecte. Il devrait être <?= $value ?>

1

passer de l'entrée à autre chose que « mise à jour » Et changer < ?$=value >-< ?=$value >

<input id="myInput" name="number" class="spinner" readonly="readonly" value="<?= $value?>"/>