我使用Fancybox
以下列方式调用php文件的index.php:
<div class="pic">
<a id="showcase1" href="showcase/showcase1.php"><img src="images/showcase1t.png"/></a>
</div><!-- .pic -->
在showcase/showcase1.php
内我有以下代码:
<?php include_once '../localization.php'; ?>
<div id="inline">
<img src="images/showcase2.png"/>
<?php echo l('inline_p'); ?>
<a href="http://studyatbest.com"><?php echo l('inline_a'); ?></a>
</div>
从语言文件(lang.en.php
)调用数组中的值:
'inline_p' => ' <p><strong>Previous</strong> = Left Arrow Key</p>
<p><strong>Next</strong> = Right Arrow Key</p>
<p><strong>Close</strong> = Esc</p>',
'inline_a' => 'Visit',
由“控制器”(localization.php
)帮助:
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if(isSet($_GET['lang'])) {
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang'])) {
$lang = $_COOKIE['lang'];
}
else {
$lang = 'en';
}
// use appropiate lang.xx.php file according to the value of the $lang
switch ($lang) {
case 'en':
$lang_file = 'lang.en.php';
break;
case 'es':
$lang_file = 'lang.es.php';
break;
case 'zh-tw':
$lang_file = 'lang.zh-tw.php';
break;
case 'zh-cn':
$lang_file = 'lang.zh-cn.php';
break;
default:
$lang_file = 'lang.en.php';
}
//translation helper function
function l($localization) {
global $lang;
return $lang[$localization];
}
include_once 'languages/'.$lang_file;
?>
如果我直接打开showcase/showcase1.php
,数组会完美地显示语言文件中的值,但是当使用fancybox从锚链接调用时,它会显示:
致命错误:调用未定义 函数l()in d:\ WAMP \ WWW \项目\ alexchen \ alexchen2.6 \展示\ showcase1.php 在第3行
有什么建议吗?
修改:
l
是语言文件中的数组,但我稍后将其用作函数(请参阅localization.php的末尾)。
答案 0 :(得分:1)
你应该使用require_once来做这些调用。我会冒险发现它没有找到localisation.php。
Include仅在文件不存在时发出警告,而require将发生致命错误。如果没有它,程序将无法正常工作,请始终使用require over include。
相对而言,是从不同的路径调用AJAX版本吗?
答案 1 :(得分:1)
我发现了问题。在localization.php
中调用langauages/lang.en.php
和showcase/showcase1.php
时,PHP代码无法归档这些文件。我将所有展示文件放在根目录中,现在一切正常。感谢他们帮助我找到答案的回复!
答案 2 :(得分:0)
我不确定,但我要尝试的第一件事就是复制来自localcase.php里面的localization.php的所有代码。如果以这种方式AJAX调用工作,那么你可以确定fancybox调用php的方式有问题。然后我会使用Firebug或实时http头Firefox扩展来检查showcase1.php的调用方式。
答案 3 :(得分:0)
添加error_reporting(E_ALL);在那里。我怀疑你在尝试包含localization.php时遇到了另一个错误,并且由于某种原因它没有显示出来。您可能还必须在php.ini中启用display_errors,或使用ini_set()。
使用工具找出直接调用脚本和使用AJAX调用脚本之间的不同之处。我推荐Fiddler。