gpt4 book ai didi

php - 从 Jquery $.getJSON 方法获取数组的全局数组到 REUSE 数组

转载 作者:行者123 更新时间:2023-11-28 20:20:33 26 4
gpt4 key购买 nike

好吧,在搜索 Stack Overflow 寻找答案后,我发现了两个线程并尝试了它们,但它们对我不起作用。

Assign data from jQuery getJSON to array

How to get JSON array from file with getJSON?

我的问题是我想使用数据库中的一些数据作为映射实用程序,但是在调用 Jquery 方法 $.getJSON() 后,JSON 的某些元素会消失。我可以将它们创建为“ul”元素。我无法使用我尝试过的任何方法将它们推送到数组的数组。我在这里问是因为我很好奇我做错了什么。我认为我可能必须遍历 DOM 才能获取曾经填充过的元素,但这对我来说似乎很愚蠢,我想知道是否有更简单的方法。我是 javascript 和 Jquery 的新手,但了解编程概念。

我使用的概念是这样的:

  1. 我有一个 SQL Server 2008 数据库,其值:

    PlaceID PlaceName
    1 Place 1
    2 Place 2
    3 Place 3
    4 Place 4
  2. 我可以使用“sqlsrv”驱动程序创建一个 PHP 脚本来获取值并输出

    echo json_encode($data);
  3. 我可以确认我可以在本地 IIS 中从该 PHP 脚本返回数据。 (您必须对 IIS 进行所有特殊的偷工减料,才能使其像 PHP)

  4. 我可以使用 JQuery 库 2.0.3.js 调用 php 脚本并显示其数据

    $.getJSON('SqlTalk.php')
  5. 我可以用它填充 HTML 中的元素,但我无法获得数组的数组以便与其他对象重用,而这正是我真正想要的。最终,我想制作一个完整的 javascript,它只从 PHP 脚本获取数组数组,然后引用该 javascript 嵌入或作为用于映射的引用。然而,从我的阅读看来 $.getJSON 是异步的,但即使是我看到的方法也无法让我尝试“推送”到现有数组。可能是我在混合 Jquery 和传统 javascript 时误解了语法。

瓶颈所在的完整 HTML 代码。基本上,PHP 将返回步骤 1 中所示的数据,但 JSON 对象除外。这是一个简单的例子,让我首先超越概念验证。我可以显式推送到数组,并且可以很好地生成 ul 元素的子项。无论我尝试根据我所读到的内容重新格式化 getJSON 方法,我都无法从“getJSON”中推送项目。

<html>
<head>
<script type='text/javascript' src='JQuery 2.0.3.js'></script>
</head>
<body>
<ul></ul>
<script>
test = [
{
PlaceID: "1",
PlaceName: "Somewhere"
}
]

test.push({PlaceID: "2", PlaceName: "SomewhereElse"});

function getArray() {
return $.getJSON('SqlTalk.php')
}

getArray().done(function(json){
$.each(json, function(key, val){
//test[key] = { PlaceID: val.PlaceID}; // doesn't work
test.push({PlaceID: val.PlaceID, PlaceName: val.PlaceName}); // also does not work, can't push.
$('ul').append('<li id="' + key + '">' + val.PlaceName + '</li>');
});
});

alert(test.length);
// So I get my output to the 'ul' element fine, but my test array never gets the values.
//I have tried what others have stated and it does not work.
</script>

</body>
</html>

最佳答案

在请求完成之前,全局不会更新。

    var getArrayPromise = getArray().done(function(json){
$.each(json, function(key, val){
//test[key] = { PlaceID: val.PlaceID}; // doesn't work
test.push({PlaceID: val.PlaceID, PlaceName: val.PlaceName}); // also does not work, can't push.
$('ul').append('<li id="' + key + '">' + val.PlaceName + '</li>');
});
});

getArrayPromise.done(function(){
alert(test.length);
});

没有解决方法,这就是异步请求的工作原理。时钟持续滴答作响,代码在接收请求时持续执行。

关于php - 从 Jquery $.getJSON 方法获取数组的全局数组到 REUSE 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18409904/

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