11484 sujets

JavaScript, DOM et API Web HTML5

bonjour,

Je n'arrive pas a afficher tous les résultats car sur la chaine suivante il n'y a pas d'image et donc j'ai le message suivant
Uncaught TypeError: Cannot read property 'split' of null

voici mon code
merci d'avance

<div id="target" class="target"></div>


<script>


$.get('https://wcf.tourinsoft.com/Syndication/3.0/cdt33/c616ab2a-1083-4ba0-b8e2-f7741e443e46/Objects?$format=json', function(data){
  
  var blogs = data.value;
  
  $(blogs).each(function(){
    var manifs = this.Listingraisonsociale;
   var ouverturecomp=this.Listinginformationsouverture;
 var commune=this.Listingcommune;
    var ouverture=this.Listingouverture;
var photos= this.Listingphotos;
   

    //var datatest= this.Listingphotos;
    let output = '';
    
    let users=this.Listingphotos.split('$');
    //var testsplit = split($);
    
    for (var i = 0; i < users.length; i++) {
       console.log(users[i]); 
      output += '<img src='+users[i]+'?width=150&height=150&crop=1>';
      
      
       
      
    }$('.target').append( '<p>' + manifs + '</p><span>'+output+'</span>');
    });
});

</script>

Modifié par _laurent (09 Apr 2021 - 18:42)
Modérateur
Salut,

Cannot read property 'split' of null

du coup on regarde le split :
let users=this.Listingphotos.split('$');

du coup on regarde this.Listingphotos :
console.log('this.Listingphotos',this.Listingphotos); 

Ce qui donne :
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-34.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-38.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-45.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/Benoit-Rual-DSC08467.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-piraillan-8.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/marche-piraillan.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-piraillan-13.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-piraillan-6.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-40.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-37.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-4.jpg$http://cdt33.media.tourinsoft.eu/upload/marche-cap-ferret-47.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/a2-Marche-8.jpg$http://cdt33.media.tourinsoft.eu/upload/Marche-de-La-Teste-de-Buch.jpg$http://cdt33.media.tourinsoft.eu/upload/a2-Marche-4.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/marche-couvert-2.JPG
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/marche-de-plein-air.JPG$http://cdt33.media.tourinsoft.eu/upload/Marche-de-plein-air-centre-ville.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/marche-municipal-.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/a2-Marche-7.jpg$http://cdt33.media.tourinsoft.eu/upload/a2-Marche-2.jpg$http://cdt33.media.tourinsoft.eu/upload/Marche.jpg$http://cdt33.media.tourinsoft.eu/upload/Marche-3.jpg
 
this.Listingphotos  http://cdt33.media.tourinsoft.eu/upload/Marche-5.jpg
 
this.Listingphotos null

Donc ton objet blogs[10] est null Smiley smile

Sinon pour ton soucis il faudrait que tu mettes le titre dans une variable et que tu regarde s'il change ou non. S'il change tu l'ajoutes :

var titre ='';
    for (var i = 0; i < users.length; i++) {
       //console.log(users[i]); 
      //output += '<li>'+users+'</li>';
      if(manifs !== titre) {
      	titre = manifs;
       	$('.target').append( '<p>' + manifs + '</p>');
      }
      $('.target').append( '<span><img src='+users[i]+' width=150px></span>');
      
    }


Bonne soirée
Modifié par _laurent (09 Apr 2021 - 18:43)
Super merci _laurent
et peux tu me dire comment on résous le problème quand l'objet est null ! pour quand même voir la suite stp ?

sinon j'ai trouvé ca aussi mais vraiment par accident ! lol

let output = '';
let users=this.Listingphotos.split('$');
//var testsplit = split($);
for (var i = 0; i < users.length; i++) {
console.log(users);
output += '<img src='+users[i]+'?width=150&height=150&crop=1>';
}$('.target').append( '<p>' + manifs + '</p><span>'+output+'</span>');


[/i]
trouvé !!
remplacer cela
let users=this.Listingphotos.split('$');

par ça
let users = this.Listingphotos ? this.Listingphotos.split('$') : [];

Merci encore Smiley biggrin
Modérateur
C'est ça. Ou mettre un if autour :
if(this.Listingphotos) {
    let users=this.Listingphotos.split('$');
    //var testsplit = split($);
    for (var i = 0; i < users.length; i++) {
       console.log(users[i]); 
      output += '<img src='+users[i]+'?width=150&height=150&crop=1>';
    }$('.target').append( '<p>' + manifs + '</p><span>'+output+'</span>');
}

mais ta solution est équivalente.

Bonne nuit !
Modifié par _laurent (10 Apr 2021 - 14:20)