Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
variable indefinida bajo jquery payload

Estoy tratando de publicar algunos datos en una API, pero tengo problemas con javascript.

 function pushData() { let rawdata; $.ajaxSetup({ async: false }); $.getJSON('https://api.db-ip.com/v2/free/self', function(result) { result = rawdata; }) console.log(rawdata); let message = { "ip": rawdata.ipAddress, "country": rawdata.countryName, "city": rawdata.city }; console.log(message); $.ajax({ url: "https://xxxx.execute-api.eu-west-2.amazonaws.com/get", headers: {}, /* crossDomain: true, */ type: "GET", success: function(result) { console.log(result); }, error: function() { console.log("error"); } }) } $.ajax({ url: "https://xxxx.execute-api.eu-west-2.amazonaws.com/post", crossDomain: true, type: "POST", contentType: "application/json; charset=utf-8", dataType: "json", data: JSON.stringify(message), success: function(result) { console.log(result); }, error: function() { console.log("error pushing data"); } })

Recibo un error de Uncaught ReferenceError: message is not defined , aunque creo que el message es una variable global, por lo que debería llamarse correctamente en la carga útil. ¿Qué estoy haciendo mal aquí?

Gracias a todos por su respuesta de antemano, solo estoy tratando de escribir un script rápido para mi API aquí.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

message es una variable local en la función pushData() , no una variable global. Pero incluso si fuera global, tendría que llamar a la función antes de la segunda llamada $.ajax() .

Mueva la segunda llamada AJAX dentro de la función para que pueda acceder a la variable. Y adopte la asincronía, no la combata con async: false . Anide las sucesivas llamadas AJAX dentro de la función de devolución de llamada de la anterior.

 function pushData() { $.getJSON('https://api.db-ip.com/v2/free/self', function(rawData) { console.log(rawdata); let message = { "ip": rawdata.ipAddress, "country": rawdata.countryName, "city": rawdata.city }; console.log(message); $.ajax({ url: "https://xxxx.execute-api.eu-west-2.amazonaws.com/get", headers: {}, /* crossDomain: true, */ type: "GET", success: function(result) { console.log(result); $.ajax({ url: "https://xxxx.execute-api.eu-west-2.amazonaws.com/post", crossDomain: true, type: "POST", contentType: "application/json; charset=utf-8", dataType: "json", data: JSON.stringify(message), success: function(result) { console.log(result); }, error: function() { console.log("error pushing data"); } }) }); }, error: function() { console.log("error"); } }) }

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!