2009-06-23 11 views
0

J'utilise le plugin Form JQuery.Récupération des données soumises via JQuery Form Plugin dans cakePHP

Comment puis-je obtenir la valeur affichée dans le contrôleur cakephp?

Mon code est comme ceci:

<?php echo $form->create('Result',array('action'=>'submit'));?> 
//some input text fields,texarea fields 
<?php echo $form->end('submit');?> 

<script> 
    $(document).ready(function(){ 
    var options = { 
     beforeSubmit: showRequest, // pre-submit callback 
     success:  showResponse, // post-submit callback 
     url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
     type: 'POST', 
     resetForm: true  // reset the form after successful submit 
    }; 
    $('#ResultSubmit1Form').submit(function() { 
     $(this).ajaxSubmit(options); 
     return false; 
    }); 
    });//ready 

    // pre-submit callback 
    function showRequest(formData, jqForm, options) { 
    var queryString = $.param(formData); 
    alert('About to submit: \n\n' + queryString); 
    $.ajax({ 
     type: "POST", 
     url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
     data: "str="+queryString, 
     success: function(msg){ 
     alert("Data Saved: " + msg); 
     } 
    }); 
    return true; 
    } 

    // post-submit callback 
    function showResponse(responseText, statusText) { 
    alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + 
     '\n\nThe output div should have already been updated with the responseText.'); 
    } 

</script> 

Et dans mon contrôleur CakePHP:

<?php 
    class ResultsController extends AppController 
    { 
    var $name = 'Results'; 
    var $helpers=array('Html','Ajax','Javascript','Form'); 
    var $components = array('RequestHandler','Email'); 
    var $uses=array('Form','User','Attribute','Result'); 
    function submit($id = null) { 
     $str=$_POST['str']; 
     echo "POSTED value ".$str; 
    } 
    } 

il est seulement l'affichage _method=POST au lieu de _method=POST&name=x&age=22.

Mais si j'ai utilisé $_POST['Name']; (où Name est l'attribut name du champ de saisie1), il affiche le x que j'ai tapé dans le champ de saisie1.

Comment obtenir ce que je veux?

Répondre

0

Vous pouvez récupérer vos valeurs dans votre contrôleur en accédant à $ this-> params ['formulaire']. Donc, pour le champ 'Nom', il entrerait dans $ this-> params ['form'] ['Name']. Le plugin envoie toujours les données comme POST, la seule différence est qu'il a été ajaxé. :)

+0

Ya Mais j'ai besoin de publier cette valeur directement.Comme au lieu de retriving la valeur $ _POST ['fom'] ['Nom'] puisque le contrôleur ne saura pas quels sont tous les champs sont là dans la page .. Le formulaire peut contenir différents champs dans chaque formulaire ... – useranon

+0

Je ne comprends pas ce que vous dites. toutes les valeurs affichées iront à $ this-> params et les champs de saisie correctement nommés iront à $ this-> data. ce plugin envoie en effet une requête POST du navigateur au contrôleur et vous devez traiter le formulaire. – zam3858

+0

pouvez-vous s'il vous plaît dire comment accéder à ces données postées. Je l'ai essayé avec echo $ _POST ['str']; aussi je l'ai essayé avec echo http_build_query ($ _ POST ['str']); echo http_build_str ($ _ POST ['str']); Mais la réponse ne vient pas .. Où ma valeur str est name = a & age = 22 – useranon

Questions connexes