Uncaught TypeError: Cannot use 'in' operator to search for 'length' in

Résolu/Fermé
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - Modifié le 24 sept. 2019 à 00:38
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 25 sept. 2019 à 10:49
Bonjour à tous,

Un code ajax me permet de récupérer selon la zone et le poids, un montant précis.
J'utilise 2 tables, celle de dhl et celle de la poste.

Mon code ajax et la requête pour dhl fonctionne très bien etle résultat est récupéré via ce bout de code :
if($VAL_Table == "tb_shop_prices_dhl") {

	$sql = "SELECT $VAL_Zone FROM $VAL_Table WHERE $VAL_Poids BETWEEN Poids_min AND Poids_max"; 
	try{
		$Stat = $pdo->prepare($sql);
		$Stat->execute();
		$result["success"] = $Stat->fetchAll(PDO::FETCH_ASSOC);
	}
	catch(PDOException $e) {$result["Error"] = "<div class='alert alert-danger'>".$e->getMessage()."</div>";}

}


Quant à la condition de la poste, c'est plusieurs requêtes et le résultat n'est pas tiré de la requête mais d'une valeur $Poids_final que j'appel ainsi :
try{
[...]
$result["success"] = $Poids_final;
}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}

Seulement à cette étape, j'ai une erreur : Uncaught TypeError: Cannot use 'in' operator to search for 'length' in

Voici mon code ajax complet :
function Montant_Livraison() {
 var VAL_Poids   = $('#VAL_Poids').val();
 var VAL_Livraison  = $('#VAL_Livraison').val();
 var VAL_Zone   = $('#VAL_Zone').val();
 var VAL_Lieu  = $('#VAL_Lieu').val();
 var VAL_Table;

 switch (VAL_Livraison) {
  case "SIVOP" : VAL_Table = null; break;
  case "EXPRESS" : VAL_Table = "tb_shop_prices_laposte"; break;
  case "LA POSTE" : VAL_Table = "tb_shop_prices_laposte"; break;
  case "DHL"  : VAL_Table = "tb_shop_prices_dhl"; break;
  default   : VAL_Table = null; break;

 }
 
 var data = {VAL_Table:VAL_Table, VAL_Poids:VAL_Poids, VAL_Livraison:VAL_Livraison, VAL_Zone:VAL_Zone, VAL_Lieu:VAL_Lieu};

 $.ajax({
    type: "POST",
    url: "_montant_livraison.php",
    cache: false,
    data: data,
    async: true,
    dataType: "json"
   })

 .done(function(reponse) {

 var erreur = typeof(reponse.Error) != 'undefined' ? reponse.Error : null;
 var result = typeof(reponse.success) != 'undefined' ? reponse.success : null;

 if (!erreur) {
 if (result != null) {
 console.log('Resultat', result);

var TAX = ""
var Poids = "";

 $.each(result, function(i, vx) {
 $.each(vx, function(colonne, valeur) {

var Taux = Number(<?php echo $MNY_Taux; ?>);
var Pays = document.getElementById("VAL_Lieu").value;

 });
 });

$("#RCP_Frais").html("<?php echo ": ".$MNY_Symbole." "; ?>" + Poids);
$("#VAL_Transport").val(Poids);

}

if (result == null) {
var Poids = "0";

$("#RCP_Frais").html("<?php echo ": ".$MNY_Symbole." "; ?>" + Poids);
$("#VAL_Transport").val(Poids);

}

document.getElementById("Montant_Transport").innerHTML = document.getElementById("VAL_Devise").value + " " + document.getElementById("VAL_Transport").value;

} else {alert('Erreur AJAX !');console.log('Erreur', erreur);}})
.fail(function(jqXHR, textStatus) {console.log('Ajax error :', jqXHR, textStatus);alert('Erreur AJAX !');});

}

et mon code php sur _montant_livraison.php :
$VAL_Table   = !empty($_POST["VAL_Table"])   ? $_POST["VAL_Table"]: NULL;
$VAL_Poids   = !empty($_POST["VAL_Poids"])   ? $_POST["VAL_Poids"]: NULL;
$VAL_Livraison  = !empty($_POST['VAL_Livraison'])  ? $_POST['VAL_Livraison']: NULL;
$VAL_Zone   = !empty($_POST["VAL_Zone"])   ? $_POST["VAL_Zone"]: NULL;
$VAL_Lieu   = !empty($_POST["VAL_Lieu"])   ? $_POST["VAL_Lieu"]: NULL;

$result = array();

if($VAL_Table == "tb_shop_prices_dhl") {

[...dhl...]

}

if($VAL_Table == "tb_shop_prices_laposte") {

try{
[...code et conditions if pour la poste...]

 $result["success"]   = $Poids_final;

}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}

}

echo json_encode($result);
exit();


J'ai remarqué que même si je supprime tout le code du contenu de la poste et change la variable $Poids_final en valeur fixe, j'obtiens la même erreur...

Avez-vous une idée ? et merci de votre aide.

Cordialement

Configuration: Windows / Chrome 76.0.3809.132
A voir également:

5 réponses

jordane45 Messages postés 38140 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 24 sept. 2019 à 00:48
Quel est le message d'erreur complet?
Sur quelle ligne de code ?
Que contient ta requête ajax lorsque tu regardes dans la console ?
Que t'affichent tes différents console.log ?

Ton souci vient du php ou du js ?


0