2012-02-14 8 views
1

J'utilise KO ce qui est mon code ajax:PHP recevoir JSON

save: function() { 
       $.ajax({ 
        url:"http://localhost/loyalty/welcome/json/", 
        type: "post", 
        data: ko.toJSON(this), 
        contentType: "application/json", 
        success: function (result) { alert(result) } 
       }); 
      } 

En utilisant Firebug je peux voir que le message JSON est envoyé correctement, le problème est de savoir comment recevoir sur PHP, ce qui est le nom de ce qui a été envoyé?

J'utilise CodeIgniter

Merci d'avance pour toute aide.

Répondre

0

La solution est de prendre

contentType: "application/json", 

de l'appel ajax.

=)

2

Ce serait dans la variable $_POST['key']'key' sont les valeurs de clé dans l'objet JSON.

+0

Salut ... Je reçois ce JSON: [{ "name": "Joà £ o", "isOnTwitter": false}] et en utilisant $ _POST [ 'nom'] retourne rien . – Gerep

+1

Votre JSON est dans un tableau. Vous le voudriez dans un objet nu avec juste le '{}' autour de lui. Sinon, c'est un tableau, et vous devrez lui donner un nom. Quelque chose comme '{" jsonval ": ko.toJSON (this)}' – Ktash

+0

les données de formulaire ne sont pas transmises en utilisant json. HTTP a son propre format pour transférer des données. Utilisez form.serialize() –

0
save: function() { 
      $.ajax({ 
       url:"http://localhost/loyalty/welcome/json/", 
       type: "post", 
       data: $(this).serialize()/*Where this is an instance of the form change with appropriate selector such as #loginForm*/, 
       contentType: "application/json", 
       success: function (result) { alert(result) } 
      }); 
     } 

Utiliser $ _POST dans le fichier php pour obtenir les données Je suis assumin que vous utilisez jquery aussi bien et $ est la fonction jquery. Maintenant, ces données sont disponibles dans le post superglobal. NB: vous n'avez pas besoin d'utiliser json pour envoyer des données via la fonction ajax. Les données sont passées dans un format de tableau sérialisé comme: field1 = value1 & field2 = value2 etc ...

Si vous devez cependant utiliser json, ce qui est franchement inutile, utilisez les données: "json =" + ko.toJSON (form

et sur les données côté serveur = json_decode ($ _ POST ['json']);

2
**This is what exactly the way to post as json way** 

//index.php 
    $(document).ready(function(){ 
       obj = {} 
       obj.name = "sam" 
       obj.value = "12345" 
         $.ajax({ 
           url:"json.php", 
           type: "post", 
           data :obj, 
           dataType:"json", 
           success: function (result) { 
            alert(result.name); 
           } 
          }); 
      }); 

    //json.php ,, the posted data is received as array ,, so we need to convert it as //json_encode to make as JSON again 

    <?php 
    $jsonReceiveData = json_encode($_POST); 
    echo $jsonReceiveData; 
    ?>