0

我最近试图让我的网站更有活力。它在很大程度上基于 php,我尝试研究使用 ajax 动态更改页面。但是,我偶然发现了通过 ajax 加载 php 循环的问题。我查找了一个使动态页面成为可能的脚本:http ://www.queness.com/post/328/a-simple-ajax-driven-website-with-jqueryphp

switch($_GET['page'])  {
case 'page1' : $page = 'Page 1';
                break;
case 'page2' : $page = 'Page 2';
                break;
case 'page3' : $page = 'Page 3';
                break;
case 'page4' : $page = 'Page 4';
                break;
}
echo $page;

例如,如果您更改

 case 'page1' : $page = 'Page 1';

进入一个循环

 case 'page1' : for ($i=0;$i<2;$i++){$page .= $i;};

它只是没有做任何事情。有任何想法吗?:)

编辑:我希望它输出给定循环通常输出的内容。在处理它时似乎存在某种冲突。发布的没有循环的代码可以按预期工作,但是当您使用 php 循环时,它将无法正常工作。

EDIT2:我已经确定问题出在循环上,所以我认为没有必要拿出我正在使用的代码。我只是在那里放了一个简单的循环作为例子。该代码基本上是遍历数据库中的数据条目并输出它们。如果有人能指出为什么这不起作用以及是否有解决方法,我会很高兴。:P

4

4 回答 4

0

使用正则表达式替换

echo preg_replace('/page([0-9]+)/i', 'Page $1', $_GET['page']);

case 'page1' : for ($i=0;$i<2;$i++){$page .= $i;};什么都不做的原因$page是空的。尝试

case 'page1' : $page = 'page'; for ($i=0;$i<2;$i++){$page .= $i;};
于 2012-07-14T01:21:45.673 回答
0

当我将你的循环放入一个函数时:

函数 testthis()
{
for ($i=0;$i<2;$i++){$page .= $i;};
}

它抛出一个错误:“注意:未定义的变量:demo.php 中的页面”

当我在循环之外声明 $page - 只需放入以下行: $page = ""; 它有效 - 没有错误。

所以 - 我的建议 - 在循环外声明 $page 并将其设置为空字符串“”。看看是否能解决问题。

根本原因似乎是您将字符串连接到尚未声明的变量。

于 2012-07-14T04:04:21.583 回答
0

我不相信您可以将 for 循环用作 case 语句的值。看下面的结果:

http://ideone.com/GXXMs

在没有看到你的真实代码和知道你真正目标的情况下,我最好的建议是在输入 switch 语句之前预处理你的循环。

于 2012-07-14T00:31:05.143 回答
0

也许问题在于没有尝试在 PHP 案例中执行循环。

您似乎正在使用 $_GET['page'] 调用从 QueryString 中获取值。如果您在 URL 语法中定义了“页面”(例如:foo.php?page=page1),这将起作用。在此示例中,您从未在查询字符串中定义名为“page”的变量,而只是将 #page1 放在 URL 的末尾。这意味着您的 switch 语句中的任何情况都不会执行,因为它们与 $_GET 返回的空值不匹配。

尝试解析查询字符串以将“#”之后的任何内容放入您在 case 语句中使用的参数中。

于 2012-07-14T00:31:36.247 回答