2009-06-24 5 views
0

J'utilise CakePHP et jQuery pour mon application.Soumission de formulaire JQuery et contrôleur CakePHP

Mon code jQuery est:

$(document).ready(function(){ 
    var str,fields; 
    function showValues() { 
     str = $("form").serialize(); 
     $("#results").text(str); 
    } 
    $("input").change(showValues); 
    showValues(); 
    $(".submit").click(function(){ 
     alert(str); 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
      data: "str="+str, 

      success: function(msg){ 
       alert("Data Saved: " + msg); 
      } 
     });//ajax 
     return false; 
    });//submit click 
});//ready 

Alors que l'alerte à l'intérieur clic de soumettre la fonction affiche la chose entrie par exemple .. _method=POST&name=a

Mais quand je poste cette valeur et retireve dans le contrôleur de son affichage seulement _method=POST..

Mon code de contrôleur est comme,

function submit1($id = null) { 
    echo "in ctrller ".$_POST['str']; 
} 

Comment obtenir la valeur entière dans le contrôleur et l'enregistrer. Ou y a-t-il une méthode à récupérer?

Répondre

0

Le paramètre de données pour l'appel $ .ajax prend une chaîne dans ce format:

param1=val1&param2=val2 

maintenant, vous produisez déjà une chaîne dans ce format en utilisant le $ (le "formulaire") sérialisation (.) de sorte que la bonne façon de l'assigner est comme ceci:

$.ajax({ 
    type: "POST", 
    url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
    data: str 
    }) 

Votre contrôleur peut alors inspecter le tableau $ _POST pour le paramètre que vous recherchez.

Ou imprimez les méthode POST params comme chaîne de requête:

echo http_build_query($_POST); 
+0

Bonjour mais l'echo http_build_str ($ _ POST) ne fonctionne pas ... Veuillez me suggérer ... – useranon

+0

Désolé, la fonction corerct est http_build_query – duckyflip

0

Je ne sais pas si elle est liée à votre problème (bien savoir gâteau, il y a une bonne chance), mais ce n'est pas la bonne façon pour transmettre des données à partir d'un formulaire dans Cake. Ce que vous devez faire est d'utiliser data[key] comme clé. Cake prendra ceci et construira un tableau appelé $this->data. Si vous utilisez le FormHelper pour créer votre formulaire HTML, il attribue automatiquement l'attribut name à data[Model][attribute], auquel vous pouvez accéder en utilisant $this->data['Model']['attribute'] ou le transmettez à une fonction d'enregistrement, qui correspond à l'utilisation prévue.