javascript - 将 jvectormap 连接到 ajax 访问的数据库

标签 javascript php jquery json ajax

我有这个问题:

Javascript 声明:

var OCUPARE_CULOARE = 
jQuery.ajax({
            type: 'post',
            url: '/wp-content/themes/seopress/VerifiOcupareHARTA.php',
            dataType: 'json',
            data : {data : codparcela},
            success: function(response) {
            var   OCUPARE_CULOARE1 =  JSON.stringify(response);
            alert (OCUPARE_CULOARE1); 

            }
      });
var ALAAA = JSON.stringify(OCUPARE_CULOARE);
console.log (OCUPARE_CULOARE);
console.log (ALAAA);

PHP 文件:

 <?php
 $res9= $_POST['data'];
 global $wpdb;
 $ocupate = $wpdb -> get_results("SELECT Cod FROM Ocupare_Cimitir WHERE Cod 
 LIKE  '$res9%'");
 echo (json_encode($ocupate));?>

主要问题是我想将 php(json 格式)的响应归因于 javascript 中的变量。

结果:

1) “console.log(OCUPARE_CULOARE)”返回:{readyState: 1, setRequestHeader: ▪, getAllResponseHeaders: ▪, getResponseHeader: ▪, overrideMimeType: ▪, …}

2) “console.log (ALAAA);”返回:{“readyState”:1}

3) "alert (OCUPARE_CULOARE1); "返回正是我想要的,将其放入 javascript 中的变量中:[{"Cod":"F01R01L02"},{"Cod":"F01R01L10"},{"编码":"F01R01L12"},{"编码":"F01R01L13"},{"编码":"F01R01L15"},{"编码":"F01R02L12"},{"编码":"F01R10L10"}]

抱歉,如果这个问题太简单了,但对我来说不是。

在过去的两天里,我读到了有关 ajax 异步调用的内容,我真的无法让它工作。

最佳答案

问题是ajax调用是异步的。这意味着即使调用尚未完成,也会继续执行 ajax 调用后的代码。

解决方案1(回调)

回调用于告诉异步操作在异步操作完成后应该执行什么。

function getDataFromServer(callback) {
    jQuery.ajax({
        type: 'post',
        url: '/wp-content/themes/seopress/VerifiOcupareHARTA.php',
        dataType: 'json',
        data : {data : codparcela},
        success: function (response) {
            callback(JSON.stringify(response))
        }
    });
}

getDataFromServer(function (OCUPARE_CULOARE1) {
    alert(OCUPARE_CULOARE1);
});

解决方案 2( promise )

尽管使用 Promise 的解决方案看起来更加冗长,但它很快就会得到返回,因为它可以轻松组合异步函数。

function getDataFromServer() {
    return new Promise(function (resolve, reject) {
        jQuery.ajax({
            type: 'post',
            url: '/wp-content/themes/seopress/VerifiOcupareHARTA.php',
            dataType: 'json',
            data : {data : codparcela},
            success: function (response) {
                resolve(JSON.stringify(response));
            }
        });
    });
}

getDataFromServer().then(function (OCUPARE_CULOARE1) {
    alert(OCUPARE_CULOARE1);
});

解决方案 3(异步/等待)

如果您不需要支持多种浏览器(特别是旧浏览器),async/await 可以是一个选项。它看起来更干净,并且可以与 Promise 进行互操作。请注意,您只能在 async 函数中使用 wait,这就是为什么在我的示例中我添加了函数 doSomething

async function getDataFromServer() {
    return new Promise(function (resolve, reject) {
        jQuery.ajax({
            type: 'post',
            url: '/wp-content/themes/seopress/VerifiOcupareHARTA.php',
            dataType: 'json',
            data : {data : codparcela},
            success: function (response) {
                resolve(JSON.stringify(response));
            }
        });
    });
}

async function doSomething() {
    const OCUPARE_CULOARE1 = await getDataFromServer();
    alert(OCUPARE_CULOARE1);
}

doSomething();

关于javascript - 将 jvectormap 连接到 ajax 访问的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230640/

相关文章:

javascript - 根据输入字段的变化插入值

php - 函数返回 1 而不是实际值

php - 菲尔康 : volt get value from array which key taken from variable

jquery - 根据jquery函数加载和卸载CSS文件

jQuery 日期选择器不显示原始文本值

javascript - 可拖动设置为零

javascript - 如何更改react.js redux中另一个reducer的状态?

php - 如果我使用沙箱,IPN 无效

jquery - 用输入替换文本

javascript - Rally SDK 2 customapp.js 与时间框过滤错误