2017-10-02 3 views
1

J'ai le code javascript ci-dessous que POSTs une demande, je veux ensuite enregistrer la réponse à une variable locale nommée sku, mais il n'est pas obligatoire.Saisir la requête POST à ​​la variable locale dans le script

La variable sku reste une chaîne vide.

var sku = ""; //to be passed to server when filled 
 
    
 
    var cookie_info = { 
 
     number_nights: number_nights_cookie, 
 
     number_travelers: number_travelers_cookie, 
 
     type_traveler: type_traveler_cookie, 
 
     departure_date: departure_date_cookie, 
 
     country: country_cookie 
 
    }; 
 
    
 
    $.ajax({ 
 
     type: 'POST', 
 
     url: 'https://azooree.com/wp-admin/php/sku-calculation.php', 
 
     data: cookie_info, 
 
     success: function(response) {    
 
      console.log('success', response); 
 
      sku = response; 
 
     }, 
 
     error: function() { 
 
      console.log('error!'); 
 
      alert("[ERROR] Information lost, please try again. Thank you!"); 
 
     } 
 
    }); 
 
    
 
    var basic = { 
 
     info: sku + "LP" 
 
    };

+0

Vous avez aussi cette balise en PHP. Voulez-vous la réponse JS ou la réponse PHP? –

+1

Votre affectation à 'basic' se passe avant le rappel de réponse, et alors que' sku' est encore vide –

Répondre

2

La valeur de la variable sku est renvoyée à partir de votre POST demande qui est asynchrone. C'est pourquoi au moment de l'attribution de la valeur de sku à basic - il sera vide.

Vous pouvez facilement mettre à jour la valeur de basic soit en utilisant une fonction de rappel comme dessous-

$.ajax({ 
    type: 'POST', 
    url: 'https://azooree.com/wp-admin/php/sku-calculation.php', 
    data: cookie_info, 
    success: function(response) {    
     console.log('success', response); 
     sku = response; 
     updateBasicValue(sku); 
    }, 
    error: function() { 
     console.log('error!'); 
     alert("[ERROR] Information lost, please try again. Thank you!"); 
    } 
}); 
function updateBasicValue(sku) { 
    basic = { 
     info: sku+"LP" 
    }; 
} 

Ou bien, vous pouvez faire tout ce que vous devez faire avec la variable sku dans la fonction success de votre AJAX demande.

MISE À JOUR Vous devez également vérifier les problèmes CORS si votre demande est envoyée de tout autre domaine ou sous-domaine différent de celui à l'origine. - (Merci LordNeo)

+0

Ajoutez simplement qu'il doit vérifier les problèmes CORS si la requête est envoyée à partir de tout autre domaine ou sous-domaine différent de celui qui cause il. – LordNeo

+0

Cela ne semble pas fonctionner. Comment faire pour que le script attende la réponse avant de continuer? –

+0

@IgorSilveira Le script ne peut pas attendre la réponse - c'est ainsi que fonctionnent les appels AJAX. Que devez-vous faire avec votre réponse? –