Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据加载到Javascript对象中_Javascript_Php_Ajax_Load Time - Fatal编程技术网

如何将数据加载到Javascript对象中

如何将数据加载到Javascript对象中,javascript,php,ajax,load-time,Javascript,Php,Ajax,Load Time,我目前正在编写一个web应用程序,它需要将来自服务器的一些数据存储在Javascript对象中。需要加载的数据量非常小,可能在1KB左右。我面临着如何将数据加载到应用程序的决策。以下是我可以选择的两条显而易见的道路: 1-使用jQuery的document ready函数,我向服务器发出AJAX请求,并将响应存储在适当的Javascript对象中。它可能看起来像这样 $(function() { $.get('index.php?get=data', function(data) {

我目前正在编写一个web应用程序,它需要将来自服务器的一些数据存储在Javascript对象中。需要加载的数据量非常小,可能在1KB左右。我面临着如何将数据加载到应用程序的决策。以下是我可以选择的两条显而易见的道路:

1-使用jQuery的document ready函数,我向服务器发出AJAX请求,并将响应存储在适当的Javascript对象中。它可能看起来像这样

$(function() {
    $.get('index.php?get=data', function(data) {
        myObj.addData(data);
    });
});
2-替代方法是在初始页面请求期间随页面一起发送数据。为了做到这一点,我将让我的服务器生成数据并将其输出到
标记之间的标记中。因为我当前的项目是用PHP编写的,所以看起来像这样:

...
</div>
<script>
    window.myData = <?= json_encode($myData) ?>;
</script>
...
$(function() {
    myObj.addData(window.myData);
});

是否有将数据加载到Javascript对象的首选方法?虽然存储的数据量相对较小,但如果服务器的ping不是很好,AJAX调用可能会导致更长的等待时间。然而,在这些事情上,AJAX调用似乎更受欢迎。有正当理由吗



编辑:数据很少被更改(可能一年一次)。因此,浏览器缓存应该不是什么大问题。

使用$.getJSON方法:

$.getJSON('/functions.php', { get_param: 'value' }, function(data) {
    $.each(data, function(index, element) {
        $('body').append($('<div>', {
            text: element.name
        }));
    });
});
$.getJSON('/functions.php',{get_param:'value'},函数(数据){
$.each(数据、函数(索引、元素){
$('body')。追加($(''){
text:element.name
}));
});
});
或者可以使用该函数循环数据:

$.ajax({ 
    type: 'GET', 
    url: 'http://example/functions.php', 
    data: { get_param: 'value' }, 
    dataType: 'json',
    success: function (data) { 
        $.each(data, function(index, element) {
            $('body').append($('<div>', {
                text: element.name
            }));
        });
    }
});
$.ajax({
键入:“GET”,
网址:'http://example/functions.php', 
数据:{get_param:'value'},
数据类型:“json”,
成功:函数(数据){
$.each(数据、函数(索引、元素){
$('body')。追加($(''){
text:element.name
}));
});
}
});

@ShivanRaptor不,我相信
json\u encode
是正确的函数。请注意,
$myData
是PHP中的关联数组,应该转换为Javascript中的数组。因此,将其编码为JSON将提供Javascript能够理解的正确语法;主要是因为加载了数据,而不是加载后获取数据。但如果数据像您所说的那样,small.json_encode通常用于服务器端将请求数据编码为javascript对象表示法。jQuery将在请求之后处理解码。json_decode会将json对象转换为php数组,javascript在不手动解析的情况下无法直接使用该数组。您能否详细说明一下为什么这种方法是更好的选择?我不认为在单独的请求中加载数据有任何好处。或者,如果您使用jQuery 1.4.1中新增的jQuery.parseJSON,那么我仍然不清楚为什么这样做。我知道有这样的选择,但我想知道为什么它是更好的选择,或者为什么它不是。这是首选的方法。就我个人而言,我将数据作为原始文本加载,而不是在请求之后使用jQuery.parseJSON(response)。我这样做只是因为有时候我真的想要回复的原始文本。如何管理每个请求提取的数据取决于您,但这是如何将响应作为javascript对象处理的。JSON=JavaScript对象表示法。@霍布斯,谢谢你的输入。你会说这只是惯例问题吗?