我有一个输出HTML的PHP文件。
为了便于配置,我有一个second
PHP文件,该文件包含在first
PHP文件中。这个包含的文件只包含一个数组定义,如下所示:
<?
$myArray = array("key1"=>"value 1","key2"=>"value 2","key3"=>"value 3");
?>
在我的第一个PHP文件中,我有以下
<? include("second.php"); ?>
<label>Select here:
<select id='mySelect'>
<? foreach ($myArray as $keyString=>$valueString) { ?>
<option value='<?= $keyString; ?>'><?= $valueString; ?></option>
<? } ?>
</select>
</label>
然而,HTML输出生成如下:
<label>Select here:
<select id='mySelect'>
</select>
<option value='key1'>value 1</option>
<option value='key2'>value 2</option>
<option value='key3'>value 3</option>
</label>
使用下面显示的选项文本呈现为空的选择下拉列表!
我确信这是一件愚蠢而简单的事情,因为我确信我之前已多次这样做而没有任何问题......
[更新]
经过调查后发现只有当我在FancyBox中显示first
PHP页面时才会发生这种情况 - 当我直接加载它时,<select>
中的选项会像您期望的那样包含在内。
FancyBox通过JavaScript通过图像的onClick事件打开如下(图像位于FancyBox打开的背景页面上,它不是first.php或second.php的一部分):
<img src="myImage.png" alt="my image" onClick="openFirstPHP();">
在我的JavaScript中(first.js
包含在first.php
中,其中包含通常的<SCRIPT>
标记):
function openFirstPHP() {
$.fancybox({
href: "/first.php",
type: "ajax",
afterShow: function() {
// do some setting of some radio buttons' states - which works fine
}
});
}
有关信息,我之所以这样称呼first.php
而不是iFrame,或者它与调用页面交互的原因是什么,因此避免我必须引用不同的文档对象(我认为)。
基本上其他所有内容在first.php
中都没有问题 - cookie的读取和设置,与调用PHP页面变量的交互等。唯一不起作用的是插入这些<options>
标签与<select>
标签不一致。
答案 0 :(得分:1)
您编写了一个for
循环,但您将其视为foreach
循环。
这应该有效:
<? foreach ($myArray as $keyString=>$valueString) { ?>
<option value='<?= $keyString; ?>'><?= $valueString; ?></option>
<? } ?>
答案 1 :(得分:0)
从&#39;更改你的循环。到了&#39; foreach&#39;。
答案 2 :(得分:0)
试试这个:
<?php include_once("second.php");
?>
<label>Select here:
<select id='mySelect'>
<?php foreach ($myArray as $keyString=>$valueString) { ?>
<option value='<?php echo $keyString; ?>'><?php echo $valueString; ?></option>
<?php } ?>
</select>
</label>
答案 3 :(得分:0)
由于我的HTML标记中存在拼写错误而不是PHP或无序标记生成问题而导致这种情况变得奇怪。
我的开场<select>
声明中有一个迷路。即。
<select id='mySelect' />.
由于浏览器会尽力理解格式错误的HTML,因此查看检查员<select>
后紧跟</select>
,然后我的选项和我的代码中的结束</select>
是被完全删除,因此<option>
语句不在select中,因此被忽略。
奇怪的是,这只发生在FancBoxy内部调用时,直接调用页面时它没有问题!
删除错误放置/在开头<select>
语句中完全解决了问题。