[英]Prepare SQL - AJAX return Data
我需要一些幫助來設置數據庫標記檢索。 我對到底傳回的內容有些困惑。 這是我到目前為止的內容:
返回的數據:
["Chatswood NSW AU","Chippendale NSW AU"]
JS:
var opdata = [];
function markers() {
$.post("id.php", {id: <?php echo $id; ?>})
.done(function(data) {
//data is array returned
opdata = data; //Tried this
$(opdata) = data; //Tried this
opdata.push(data); //Tried this
$.each(data, function(i) { //Tried this
opdata.push(data[i]);
});
});
console.log(opdata); //Shows [] empty array regardless what i do
}
PHP:
$arr = array();
while ( $selectData -> fetch() ) {
$arr[] = $address;
}
echo json_encode($arr);
如何獲取數據? 以上都不起作用。
這讓我發瘋..我應該只是$ .ajax嗎?
對.done
的調用是異步的,這意味着.done
完成,即.done
ajax調用之前,然后立即調用console.log
(即使http調用尚未完成)。
根據您的用例和上下文,您可以在3個選項之間進行選擇,以將opdata
返回給調用者函數:
///// OPTION 1: synchronous call
function markersUsingSynchronousCallToAjax() {
var opdata = [];
$.ajax({
type: "POST",
url: "id.php",
async: false, // disable asynchronous call to ajax
data: {id: <?php echo $id; ?>},
success: function(data) {
opdata = data;
}
})
return opdata;
}
var opdata = markersUsingSynchronousCallToAjax();
console.log("using a synchronous ajax call", opdata);
///// OPTION 2: callback
function markersUsingCallback(callback) {
$.post("id.php", {id: <?php echo $id; ?>})
.done(function(data) {
callback(data);
});
}
markersUsingCallback(function(opdata){
console.log("using a callback", opdata);
});
///// OPTION 3: promise
function markersUsingPromise(callback) {
return $.post("id.php", {id: <?php echo $id; ?>});
}
markersUsingPromise().done(function(opdata){
console.log("using a promise", opdata);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.