在动态内容中使用ajax时,PHP循环不起作用

时间:2012-07-14 00:10:01

标签: php jquery ajax

我最近试图将我的网站变得更有活力。它主要基于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 个答案:

答案 0 :(得分:0)

我不相信你可以使用for循环作为case语句的值。请参阅以下结果:

http://ideone.com/GXXMs

在没有看到真实代码并了解真实目标的情况下,我最好的建议是在>输入切换语句之前预先处理循环。

答案 1 :(得分:0)

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

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

尝试解析查询字符串,将“#”后的内容输入到case语句中使用的参数中。

答案 2 :(得分:0)

使用regular expression replace

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;};

答案 3 :(得分:0)

当我把你的循环放入函数时:

功能testthis()
{
for($ i = 0; $ i&lt; 2; $ i ++){$ page。= $ i;};
}

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

当我在循环之外声明$ page时 - 只需输入行:$ page =“”;它有效 - 没有错误。

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

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