Partage
  • Partager sur Facebook
  • Partager sur Twitter

Données json ne sont pas toutes transmises à php

Sujet résolu
    10 décembre 2018 à 10:55:59

    Bonjour,

    J'ai un petit soucis que je ne comprends pas...

    Je transmet un array json qui contient plusieurs d'autre array (imbriqué) vers php mais un seul array "data.transports.request.payment.invoiceAddress = {};" n'est pas transmis vers php pourtant je le vois bien dans ma console.

    Construction de mon json

    var data = {};
    			data.transports = new Array(); // [];
    			data.transports.request= {};
    
    			data.transports.request.dateTime = convertDateTime($('#appointmentdate').val(), $('#appointmenttime').val());
    			//request.dateTimeEnd = convertDateTime($('#returndate').val(), $('#returntime').val());
    			data.transports.request.transportType = "other";
    			data.transports.request.reason = $('#reason').val();
    			data.transports.request.pickup = {};
    			data.transports.request.pickup.street = $('input[name="address-from-route"]').val();
    			data.transports.request.pickup.number = $('input[name="address-from-street_number"]').val();
    			data.transports.request.pickup.locality = $('input[name="address-from-locality"]').val();
    			data.transports.request.pickup.zipCode = $('input[name="address-from-postal_code"]').val();
    			data.transports.request.pickup.country = $('input[name="address-from-country_short"]').val();
    			data.transports.request.dropOff = {};
    			data.transports.request.dropOff.street = $('input[name="address-to-route"]').val();
    			data.transports.request.dropOff.number = $('input[name="address-to-street_number"]').val();
    			data.transports.request.dropOff.locality = $('input[name="address-to-locality"]').val();
    			data.transports.request.dropOff.zipCode = $('input[name="address-to-postal_code"]').val();
    			data.transports.request.dropOff.country = $('input[name="address-from-country_short"]').val();
    			data.transports.request.vehicleType = $('input[name="vehicletype"]').val();
    			data.transports.request.vehicleSpecification = vehicleSpecification;
    			data.transports.request.proOrVolunteer = "both";
    			data.transports.request.passenger = {};
    			data.transports.request.passenger.firstName = $('#firstname').val();
    			data.transports.request.passenger.lastName = $('#name').val();
    			data.transports.request.passenger.rrNumber = $('#rrnumber').val();
    			data.transports.request.passenger.mutuality = $('#insurance').val();
    			data.transports.request.passenger.dateOfBirth = dateOfBirth;
    			data.transports.request.payment = {};
    			data.transports.request.payment.paidByHospital = false;
    			data.transports.request.payment.invoiceTo = 'patient';
    			
    
    			if($('patientId').val() == 0)
    			{
    				data.transports.request.payment.invoiceAddress = {};
    				data.transports.request.payment.invoiceAddress.street = $('input[name="address-route"]').val();
    				data.transports.request.payment.invoiceAddress.number = $('input[name="address-street_number"]').val();
    				data.transports.request.payment.invoiceAddress.locality = $('input[name="address-locality"]').val();
    				data.transports.request.payment.invoiceAddress.zipCode = $('input[name="address-postal_code"]').val();
    				data.transports.request.payment.invoiceAddress.country = $('input[name="address-country_short"]').val();
    			}else{
    				$.post('address/getBillingAddress', {id: $('#patientId').val()}, function(invoiceAddress){
    					if(JSON.parse(invoiceAddress).length){
    						data.transports.request.payment.invoiceAddress = {};
    						$.each(JSON.parse(invoiceAddress), function(){
    							data.transports.request.payment.invoiceAddress.street = this.Street;
    							data.transports.request.payment.invoiceAddress.number = this.StreetNumber;
    							data.transports.request.payment.invoiceAddress.locality = this.State;
    							data.transports.request.payment.invoiceAddress.zipCode = this.PostalCode;
    							data.transports.request.payment.invoiceAddress.country = this.Country;
    						});
    					}					
    					else{
    						data.transports.request.payment.invoiceAddress = {};
    						data.transports.request.payment.invoiceAddress.street = $('input[name="address-route"]').val();
    						data.transports.request.payment.invoiceAddress.number = $('input[name="address-street_number"]').val();
    						data.transports.request.payment.invoiceAddress.locality = $('input[name="address-locality"]').val();
    						data.transports.request.payment.invoiceAddress.zipCode = $('input[name="address-postal_code"]').val();
    						data.transports.request.payment.invoiceAddress.country = $('input[name="address-country_short"]').val();
    					}
    				})
    			}
    			
    			data.transports.request.whoToConfirm = {};
    			data.transports.request.whoToConfirm.requestor = "patient";
    			data.transports.request.whoToConfirm.name = $('#name').val() + ' ' +$('#firstname').val();
    			data.transports.request.whoToConfirm.phoneNumber = $('#phone').val();
    			data.transports.request.whoToConfirm.email = $('#email').val();
    			

    Array Php

    Array
    (
        [dateTime] => 2018-12-12T11:00:00.000Z
        [transportType] => other
        [reason] => consultation
        [pickup] => Array
            (
                [street] => Louisweg
                [number] => 46
                [locality] => Nieuwpoort
                [zipCode] => 8620
                [country] => BE
            )
    
        [dropOff] => Array
            (
                [street] => Rue Neuve
                [number] => 22
                [locality] => Bruxelles
                [zipCode] => 1000
                [country] => BE
            )
    
        [vehicleType] => seated
        [vehicleSpecification] => walkAlone
        [proOrVolunteer] => both
        [passenger] => Array
            (
                [firstName] => Bob
                [lastName] => Marley
                [rrNumber] => 72112034760
                [mutuality] => 105
                [dateOfBirth] => 20111972
            )
    
        [payment] => Array
            (
                [paidByHospital] => false
                [invoiceTo] => patient
            )
    
        [whoToConfirm] => Array
            (
                [requestor] => patient
                [name] => Marley Bob
                [phone] => +322720976
                [email] => karim.makni@mutas.be
            )
    
    )

    Une idée ?

    Merci d'avance ;)


    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2018 à 14:31:56

      salut, ligne 35 de ton exemple, il manque le # sur patientId. Normalement tu devrais avoir une erreur dans la.console du navigateur.

      -
      Edité par Arthur222 10 décembre 2018 à 14:33:31

      • Partager sur Facebook
      • Partager sur Twitter
        10 décembre 2018 à 15:02:13

        Bien vue ! 

        Le problème persiste si cette condition n'est pas vrai donc dans le "else"

        • Partager sur Facebook
        • Partager sur Twitter
          10 décembre 2018 à 15:39:05

          Le data.transports.request.payment.invoiceAddress est vide
          • Partager sur Facebook
          • Partager sur Twitter
            10 décembre 2018 à 15:49:17

            je pense que c'est this.Street; qui doit être vide parce que je ne vois pas où tu l'initialises. Ce n'est pas invoiceAddress.street ? parce que tu as aussi mis une majuscule à Street.
            • Partager sur Facebook
            • Partager sur Twitter
              10 décembre 2018 à 15:55:52

              Street en minuscule, c'est ce que je dois envoyer et en majuscule, c'est le champ de ma table

              -
              Edité par lepotier 10 décembre 2018 à 15:56:31

              • Partager sur Facebook
              • Partager sur Twitter
                10 décembre 2018 à 18:03:44

                met un console.log sur json parse pour savoir ce que contient le retour du post, ligne 45.

                -
                Edité par Arthur222 10 décembre 2018 à 18:05:43

                • Partager sur Facebook
                • Partager sur Twitter
                  11 décembre 2018 à 7:17:50

                  Voici le console.log du json parse du post

                  [{
                  	"Id": 27,
                  	"Address": "Rue Neuve 22, 1000 Bruxelles, Belgique",
                  	"PlaceId": "ChIJFTdPI4HDw0cRAl3CokanpP8",
                  	"Long": "4.354089600",
                  	"Lat": "50.851090500",
                  	"Street": "Rue Neuve",
                  	"StreetNumber": "22",
                  	"Floor": 2,
                  	"PostalCode": 1000,
                  	"Name": "Rue Neuve 22",
                  	"State": "Bruxelles",
                  	"Country": "BE"
                  }]

                  le console.log de tout mon array data.transports.request

                  {
                   	"dateTime": "2018-12-12T10:00:00.000Z",
                   	"transportType": "other",
                   	"reason": "consultation",
                   	"pickup": {
                   		"street": "Louisweg",
                   		"number": "46",
                   		"locality": "Nieuwpoort",
                   		"zipCode": "8620",
                   		"country": "BE"
                   	},
                   	"dropOff": {
                   		"street": "Leliegaarde",
                   		"number": "33",
                   		"locality": "Asse",
                   		"zipCode": "1731",
                   		"country": "BE"
                   	},
                   	"vehicleType": "seated",
                   	"vehicleSpecification": "walkAlone",
                   	"proOrVolunteer": "both",
                   	"passenger": {
                   		"firstName": "Karim",
                   		"lastName": "Makni",
                   		"rrNumber": "72112034760",
                   		"mutuality": "108",
                   		"dateOfBirth": "20111972"
                   	},
                   	"payment": {
                   		"paidByHospital": false,
                   		"invoiceTo": "patient",
                   		"invoiceAddress": {}
                   	},
                   	"whoToConfirm": {
                   		"requestor": "patient",
                   		"name": "Makni Karim",
                   		"phoneNumber": "",
                   		"email": ""
                   	}
                   }



                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 décembre 2018 à 18:24:47

                    avec le code que tu as montré je ne vois pas, clique sur le numero de la ligne de l erreur et met si possible tout le code, tu dois pouvoir retrouver l endroit exact avec des console.log.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 décembre 2018 à 9:46:07

                      J'ai modifié la logique de la partie "if patienId == 0" suite au post de darkreen.

                      Donc maintenant, j'ai toutes mes données dans mon console.log(request) mais elles ne sont pas disponible du coté Php lorsque je fais le $.post('trasnport/set_price')

                      Création du Json

                      var request= {};
                      request.dateTime = convertDateTime($('#appointmentdate').val(), $('#appointmenttime').val());
                      			//request.dateTimeEnd = convertDateTime($('#returndate').val(), $('#returntime').val());
                      			request.transportType = "other";
                      			request.reason = $('#reason').val();
                      			request.pickup = {};
                      			request.pickup.street = $('input[name="address-from-route"]').val();
                      			request.pickup.number = $('input[name="address-from-street_number"]').val();
                      			request.pickup.locality = $('input[name="address-from-locality"]').val();
                      			request.pickup.zipCode = $('input[name="address-from-postal_code"]').val();
                      			request.pickup.country = $('input[name="address-from-country_short"]').val();
                      			request.dropOff = {};
                      			request.dropOff.street = $('input[name="address-to-route"]').val();
                      			request.dropOff.number = $('input[name="address-to-street_number"]').val();
                      			request.dropOff.locality = $('input[name="address-to-locality"]').val();
                      			request.dropOff.zipCode = $('input[name="address-to-postal_code"]').val();
                      			request.dropOff.country = $('input[name="address-from-country_short"]').val();
                      			request.vehicleType = $('input[name="vehicletype"]').val();
                      			request.vehicleSpecification = vehicleSpecification;
                      			request.proOrVolunteer = "both";
                      			request.passenger = {};
                      			request.passenger.firstName = $('#firstname').val();
                      			request.passenger.lastName = $('#name').val();
                      			request.passenger.rrNumber = $('#rrnumber').val();
                      			request.passenger.mutuality = $('#insurance').val();
                      			request.passenger.dateOfBirth = dateOfBirth;
                      			request.payment = {};
                      			request.payment.paidByHospital = false;
                      			request.payment.invoiceTo = 'patient';
                      			request.payment.invoiceAddress = {};
                      
                      			if($('#patientId').val() == 0)
                      			{
                      				request.payment.invoiceAddress.street = $('input[name="address-route"]').val();
                      				request.payment.invoiceAddress.number = $('input[name="address-street_number"]').val();
                      				request.payment.invoiceAddress.locality = $('input[name="address-locality"]').val();
                      				request.payment.invoiceAddress.zipCode = $('input[name="address-postal_code"]').val();
                      				request.payment.invoiceAddress.country = $('input[name="address-country_short"]').val();
                      			}else{
                      				$.post('address/getBillingAddress', {id: $('#patientId').val()}, function(invoiceAddress){
                      					if(invoiceAddress.length){
                      						request.payment.invoiceAddress.street = invoiceAddress[0].Street;
                      						request.payment.invoiceAddress.number = invoiceAddress[0].StreetNumber;
                      						request.payment.invoiceAddress.locality = invoiceAddress[0].State;
                      						request.payment.invoiceAddress.zipCode = invoiceAddress[0].PostalCode;
                      						request.payment.invoiceAddress.country = invoiceAddress[0].Country;
                      						
                      					}					
                      					else{
                      						request.payment.invoiceAddress.street = $('input[name="address-route"]').val();
                      						request.payment.invoiceAddress.number = $('input[name="address-street_number"]').val();
                      						request.payment.invoiceAddress.locality = $('input[name="address-locality"]').val();
                      						request.payment.invoiceAddress.zipCode = $('input[name="address-postal_code"]').val();
                      						request.payment.invoiceAddress.country = $('input[name="address-country_short"]').val();
                      					}
                      				}, 'json')
                      			}
                      			
                      			request.whoToConfirm = {};
                      			request.whoToConfirm.requestor = "patient";
                      			request.whoToConfirm.name = $('#name').val() + ' ' +$('#firstname').val();
                      			request.whoToConfirm.phoneNumber = $('#phone').val();
                      			request.whoToConfirm.email = $('#email').val();
                      		}
                      
                      console.log(request); //Ici, j'ai bien toutes les données

                      Console.log(request)

                      {
                      	"request": {
                      		"dateTime": "2018-12-21T10:00:00.000Z",
                      		"transportType": "other",
                      		"reason": "consultation",
                      		"pickup": {
                      			"street": "Louisweg",
                      			"number": "46",
                      			"locality": "Nieuwpoort",
                      			"zipCode": "8620",
                      			"country": "BE"
                      		},
                      		"dropOff": {
                      			"street": "Corneel Heymanslaan",
                      			"number": "10",
                      			"locality": "Gent",
                      			"zipCode": "9000",
                      			"country": "BE"
                      		},
                      		"vehicleType": "seated",
                      		"vehicleSpecification": "walkAlone",
                      		"proOrVolunteer": "both",
                      		"passenger": {
                      			"firstName": "Karim",
                      			"lastName": "Makni",
                      			"rrNumber": "72112034760",
                      			"mutuality": "108",
                      			"dateOfBirth": "20111972"
                      		},
                      		"payment": {
                      			"paidByHospital": "false",
                      			"invoiceTo": "patient",
                      			"invoiceAddress": {
                      				"street": "Leliegaarde",
                      				"number": "33",
                      				"locality": "Asse",
                      				"zipCode": 1731,
                      				"country": "BE"
                      			}
                      		},
                      		"whoToConfirm": {
                      			"requestor": "patient",
                      			"name": "Makni Karim",
                      			"phoneNumber": "+322720976",
                      			"email": "karim.makni@mutas.be"
                      		}
                      	}
                      }



                      Envoi des données vers Php

                      $.post('transport/set_price', {"request":request}, function(price){
                      			 $('.price').html('');
                      			 var html = '';
                      			 var total = 0;
                      			$.each(price.data, function(ix, el){
                      				$.each(el.elements, function(k, v){
                      					var item = "";
                      					switch(v.label){
                      						case 'forfait10km': item = 'Forfait 10 km';
                      							break;
                      						case 'from11to30': item = '11 km -> 30 km';
                      							break;
                      						case 'above30': item = '> 30 km';
                      							break;
                      					}
                      					total += v.costTotal
                      					html += '<div class="col-md-12">-' + item + '</div><div class="col-md-offset-2 col-md-4">' + v.km + ' Km</div><div class="col-md-4">' + v.costTotal + '€</div><div class="clearfix"></div>';
                      					
                      				});
                      			});
                      			html += '<div class="row"><div class="col-md-offset-4 col-md-4"><b>Total</b></div><div class="col-md-4"><b>' +total+ '€</b></div></div>';
                      			html += '<div class="clearfix"></div>';
                      			$('.price').html(html);
                      			
                      		});

                      Php

                      public function set_price()
                      	{	
                      		$data = [];
                      		//print_r($_POST);
                      		if(isset($_POST)){
                      			
                      			$data = $_POST;
                      			echo $json = json_encode($data);
                      			//echo $json = '{"transports":['.$json.']}';
                      			//echo $this->get_price($json);
                      
                      			//echo $this->set_transport($json);
                      		}
                      	}


                      Array Php

                      Array ( [request] => Array ( [dateTime] => 2018-12-21T10:00:00.000Z [transportType] => other [reason] => consultation [pickup] => Array ( [street] => Louisweg [number] => 46 [locality] => Nieuwpoort [zipCode] => 8620 [country] => BE ) [dropOff] => Array ( [street] => Corneel Heymanslaan [number] => 10 [locality] => Gent [zipCode] => 9000 [country] => BE ) [vehicleType] => seated [vehicleSpecification] => walkAlone [proOrVolunteer] => both [passenger] => Array ( [firstName] => Karim [lastName] => Makni [rrNumber] => 72112034760 [mutuality] => 108 [dateOfBirth] => 20111972 ) [payment] => Array ( [paidByHospital] => false [invoiceTo] => patient ) [whoToConfirm] => Array ( [requestor] => patient [name] => Makni Karim [phoneNumber] => +322720976 [email] => karim.makni@mutas.be ) ) )



                      Merci pour ton aide

                      EDIT: Tous ce qui était derrière "paidByHospital": false, n'était pas interprété par Php. Merci à vous!

                      -
                      Edité par lepotier 12 décembre 2018 à 14:18:41

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Données json ne sont pas toutes transmises à php

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown