Это асинхронный вызов, поэтому вы не можете так с него ответить.
Вам нужно переместить код, который что-то делает с data
, в функцию обратного вызова (function(data){}
).
function getAreas(){
$.post("/custom_html/weathermap.php",'',
function(data){
//do something with data here, such as calling another function
}, "json");
}
Требуется некоторое время, чтобы привести свою голову в асинхронное мышление, но вы решите это. По сути, бит кода, который отправляет запрос, выполняется после отправки запроса. Этот поток выполнения закончится, и ваш браузер просто будет сидеть и ничего не делать. тогда вызов $.post
вернет данные из weathermap.php
, и будет вызвана ваша функция обратного вызова. Это запускает совершенно новый поток выполнения. Попробуйте представить их как два совершенно разных исполнения: один вызов pre-ajax и один вызов post-ajax.
Вот немного совершенства ascii:
V
|
User clicks button
(or something else happens)
|
|
Your JavaScript runs
|
|
And eventually gets
to the ajax call -------> SERVER ------> Server sends data back
|
|
And your callback is run
on the data and execution
continues from here
|
|
V