可以将数据加载到javascript文件中吗?

时间:2010-11-01 12:55:55

标签: javascript

我有一个使用onload事件初始化的飞出javascript菜单。现在菜单中的所有数据都是硬编码的,但需要是动态的,并且来自我的数据库。有没有办法用我的数据库值构建这个javascript文件?这可能吗?我是JS的总菜鸟,所以请为我拼出一些东西。


也许我正在思考的一个例子会有所帮助。我拥有序列化数组后,这是我的JQuery文件的一部分。如何从这里将阵列放入菜单?

      if(data.success == 0) {
        // error
      } else {
        // my array that needs to be exported into the JS file.
      }

这是我正在谈论的另一个需要使用数据库中的数据构建的文件。

function create_menu()
{
  document.write(
    '<table cellpadding="0" cellspaceing="0" border="0" style="width:98%"><tr>' +
    '<td class="td" valign="top">' +

    '<h3>Test</h3>' +
    '<ul>' +
      '<li>afd</li>' +
      '<li>fsg</li>' +
      '<li>sfg</li>' +
      '<li>fsg</li>' +
    '</ul>' +
    '</td></tr></table>');
}

3 个答案:

答案 0 :(得分:3)

当使用各种服务器端脚本语言之一从浏览器进入请求时,一种选择是在服务器上动态构建JavaScript文件。这种方法的缺点是浏览器可能会缓存文件,因此可能会使用陈旧数据。

另一个选择是使用静态JavaScript文件并使用AJAX调用来获取最新的菜单选项,然后将它们呈现到页面的DOM中。这将比第一个选项更好,因为您不会遇到缓存问题。

第三种方法是为页面动态生成标记,而不用担心通过JavaScript请求菜单。这是我书中的最佳选择。我不想等待页面的导航元素通过JavaScript请求,因为它应该已经是页面的一部分。

答案 1 :(得分:0)

您需要使用AJAX。

您可以将内容从后端加载到JavaScript数组中并使用它。这是在没有页面刷新的情况下从服务器获取动态数据的方式。 希望这会有所帮助。

答案 2 :(得分:0)

JSON是一种可以使用eval()执行的数据格式。创建一些JSON,它代表您硬编码的任何格式,并在Wikipedia's example

中对其进行评估

如果您信任JSON的来源,这是可以的,在这种情况下,您自己生成它,所以它应该没问题。

示例,json_menu.php返回文本:

create_menu( { "menus" : ["afd", "fsg", "sfg", "fsg"] } );

你通过评估它来执行它:

function create_menu(JSONData)
{
    var s = '<table cellpadding="0" cellspaceing="0" border="0" style="width:98%"><tr>' +
'<td class="td" valign="top">'

    // loop through each one
    for(var menu in JSONData.menus)
        s = s + '<li>' + menu + '</li>';
    s = s + '</ul></td></tr></table>';

    // write it out
    document.write(s);
}

// this gets called somewhere in your OnLoad
function yourOnLoader()
{
    var ajaxRequest = new ajaxObject('http://your-site.com/json_menu.php');
        ajaxRequest.callback = function (responseText) { eval(responseText); }
    ajaxRequest.update();
}