簡體   English   中英

准備SQL-AJAX返回數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM