将变量从Ajax传递到Javascript

时间:2016-09-18 13:48:36

标签: javascript php arrays ajax

我知道这个问题已被提出并且可能已经回答了几次,但不是在我要求的确切背景下,以确保我有充分的理解,我想问我的具体情况。

我要求在加载HTML / Javascript页面时,它会触发服务器端调用以从数据库中查询某些信息。然后,此信息应在服务器端形成一个数组,然后可以传递给客户端。从客户端我应该能够循环遍历数组并将它们推送到客户端数组(我将循环和推送的原因是因为在此上下文中我可能需要在将某些条目放入数组之前使用字符串作为前缀然后将其显示给用户。

我目前只看到div被定位和替换但不是数组的示例。

我尝试过几次不同的代码尝试,但遗憾的是没有运气(似乎无法完全理解如何在客户端和服务器之间传递值)。

对于它的价值,我非常精通其他语言(C#,Python)所以当谈到这类东西时我不是一个完整的新手,但这是一个相当新的Javascript / Ajax冒险。

2 个答案:

答案 0 :(得分:0)

在传输用于JavaScript的数据时,通常最容易使用JavaScript Object Notation(JSON),因此json_encode:

<html>
<body>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "http://example.com/somearray.php";

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var myArr = JSON.parse(this.responseText);
        prefix(myArr);
    }
};
xmlhttp.open("GET", url, true);
xmlhttp.send();

function prefix(arr) {
    var output = [];
    var i;
    for(i = 0; i < arr.length; i++) {
        output.push('foo ' + arr[i]);
    }
    console.log(output); //["foo bar", "foo baz", "foo kaz"]
}
</script>
</body>
</html>

然后你只需要使用库或其他任何东西来制作AJAX请求,解码JSON并进行处理,就好像你在JavaScript中创建它一样:

json_encode()

(从http://www.w3schools.com/json/tryit.asp?filename=tryjson_http修改)

  

然后,此信息应在服务器端形成一个数组,然后可以传递给客户端。然后,我应该从客户端循环遍历数组并将它们推送到客户端数组

在HTTP上阅读更多内容可能会有所帮助,它是一个无状态的&#34;协议和AJAX请求实际上正在做什么(提示;它仍然是无状态的)因为听起来你不了解服务器/客户端数据的存在。

答案 1 :(得分:0)

好的,这是一个关于如何做到这一点的小例子。使用JSON时实际上非常简单。使用PHP中的<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>AJAX JSON Example</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script> $(function(){ $.getJSON('ajax.php',function(data){ $.each(data,function(index,value){ $('body').append('Name: ' + value.name + ' | City: ' + value.city + '<br />'); }) }); }); </script> </head> <body> </body> </html> ,您可以轻松地将数组转换为JSON,通过AJAX接收它们并使用每个循环处理数据。

以下是可用于测试的代码: HTML:

<?
// I was too lazy to set up a DB for this example.
// You should know how to process database data in PHP
/*
$sql = "SELECT `id`,`name`,`city` FROM `useres`";
$result = $db->query($sql);
while($array = $db->assoc($result))
{
    $json['id']['name'] = $array['name'];
    $json['id']['city'] = $array['city'];
}
*/

// This part is only the example data which you should have received from the DB
$json[1]['name'] = 'Test Tester';
$json[1]['city'] = 'Test Village';

$json[2]['name'] = 'Claud Atlas';
$json[2]['city'] = 'Haven';

// echo the array as JSON
echo json_encode($json);
?>

PHP:

{{1}}

您可以在上面的代码中找到一个实时示例:https://work.walter-it.de/test/ajax/