我有一个使用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>');
}
答案 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();
}