【发布时间】:2014-11-02 21:36:33
【问题描述】:
我正在尝试使用来自对我们服务器的调用的一系列选项填充选择下拉列表。我有服务器调用设置来运行并填充隐藏的 iframe,这部分工作正常。我需要从 iframe 中获取数据并使用该数组来填充选项列表。
在主/父页面中,我有这个表格单元格用于选择列表:
<tr>
<td><select id="ymm_model" name="vmodel">
<option value="" selected="selected">Select Model</option>
</select></td>
</tr>
此函数位于脚本区域的主/父级中,由先前的选择列表 onchange 调用,这是我在运行填充 iframe 的调用后尝试填充选择列表。 iframe 的填充工作并显示数据。
function getModels(make) // open iframe and do call
{
window.frames['dataframe'].window.location.href='http://www.atkcores.com/cgi-bin /vinholmodel.cgi?myear='+document.vinhol.ymm_year.value+'&mmake='+make;
var select = document.getElementById("ymm_model");
var mods = document.getElementById('dataframe').contentWindow.document.getElementById['models'];
for (var i = 0; i < mods.length; i++) {
var option = document.createElement('option');
option.text = option.value = mods[i];
select.add(option, 1)
}
}
我还尝试了这个函数,该函数将从从我的服务器脚本加载到 iframe 的页面上运行,并且在页面加载后运行。
function takedata(passed)
{
var select = document.getElementById("ymm_model");
var mods = document.getElementById('dataframe').contentWindow.document.getElementById['models'];
for (var i = 0; i < mods.length; i++) {
var option = document.createElement('option');
option.text = option.value = mods[i];
select.add(option, 1)
}
}
这是在我的服务器进程中形成的填充 iframe 的页面。
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
</head>
<script>
function init()
{
window.parent.takedata(document.getElementById("moddata").value);
return true;
}
</script>
<body onload="init();">
<form name="vinmodels">
<div id="moddata"> var models =["ACCORD","CIVIC","CR-V","DEL SOL","ODYSSEY","PASSPORT","PRELUDE"]; </div>
</form>
</body>
</html>
moddata div 中的内容是我需要用来填充选择列表的内容。
感谢您的任何指导或建议,
斯科特
【问题讨论】:
-
为什么要在隐藏的 iframe 中的 div 标签中以文本形式填写数据?这个 iframe 还能做其他事情吗?为什么不直接使用 AJAX 并将服务器的响应格式化为 JSON 对象并以这种方式加载数据?
-
我使用 div 标签给整个字符串一个对象名称,我想我可以在父调用中使用它。我还不熟悉 AJAX,举个例子可以帮助我学习...
-
您实际上将很难解析出
var models =,而不是只使用应该格式化的数组。但更重要的是,为什么要隐藏 iframe?您是否考虑过使用 AJAX? -
我正在考虑,并希望看到一个例子......
标签: javascript arrays select iframe option