gpt4 book ai didi

javascript - AJAX GET 未在页面加载时更新 Javascript 变量

转载 作者:行者123 更新时间:2023-12-03 03:51:15 25 4
gpt4 key购买 nike

我有一个关于通过 AJAX/JSON 将 PHP 变量传输到 JavaScript 的问题。

我希望 var ChronoID 在页面加载时使用从 AJAX get 和 PHP 代码获取的值进行更新。尽管它在 AJAX 中工作正常,但它会返回到 未定义 并且不会更新变量以供以后使用。

我做错了什么以及将 PHP 变量传输到 Javascript 的最佳方法是什么?

-- 脚本.js

$(document).ready(function () {
var jsonGet;
var chronoID;
var timeworked;
var startAt;

$.ajax({
type: "GET",
url: "detectopencrono.php",
dataType: "json",
success: function (response) {
jsonGet = response;
console.log(jsonGet); // JSON Array (works)
var arr = $.map(jsonGet, function (el) {
return el;
});
console.log(arr); // JavaScript Array (after parse, works)
chronoID = arr[0]; // (works)
$("#chrono" + chronoID + "").show(200);
console.log(chronoID); // Works, shows value
}
});

console.log(chronoID); // Undefined (doesn't work)

});

--检测opencrono.php

<?php 
include("connection.php");
session_start();

/*if (isset($_POST['projectname'], $_POST['startyear'], $_POST['startmonth'], $_POST['startday'], $_POST['deadyear'], $_POST['deadmonth'], $_POST['deadday'], $_POST['lider'], $_POST['hours'], $_POST['budget']))
{*/

$iduser = $_SESSION['ID'];

if(isset($_SESSION['gbsn']))
{
$wasopenresult = mysqli_query($mysqli, "SELECT ID, IsGbsn FROM subtask WHERE Crono='Y' AND IsGbsn='Y' AND IDUser='$iduser'")
or die("Não foi possivel executar o pedido.");
}
else
{
$wasopenresult = mysqli_query($mysqli, "SELECT ID, IsGbsn FROM subtask WHERE Crono='Y' AND IsGbsn='N' AND IDUser='$iduser'")
or die("Não foi possivel executar o pedido.");
}

if(mysqli_num_rows($wasopenresult)==1)
{
$rowwasopen = mysqli_fetch_assoc($wasopenresult);
$result1 = $rowwasopen['ID'];
$result2 = $rowwasopen['IsGbsn'];
echo json_encode(array('userid' => $result1,'gbsn'=> $result2));
header('Content-Type: application/json');
}
?>

最佳答案

“AJAX”中的“A”代表异步。为了简化您正在做的事情:

var chronoID;

$.ajax({
// do something asynchronously, which will happen later
});

console.log(chronoID);

也就是说,您尝试在 chronoID 实际被赋予值之前记录它。相反,您希望响应 AJAX 调用本身以获得该值。

哪...你已经在做了:

success: function (response) {
// other code which assigns a value to chronoID
console.log(chronoID);
}

因此,基本上,您这里拥有的是尝试执行相同操作的工作代码和非工作代码的同时示例。基本上,删除不工作的部分并保留工作的部分。您已经拥有所需的代码。

关于javascript - AJAX GET 未在页面加载时更新 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45149526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com