使用ajax处理动态内容时,PHP循环不起作用


PHP Loops not working while using ajax for dynamic content

我最近试图让我的网站更具活力。它在很大程度上是基于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;};

它就是没有任何作用。有什么想法吗?:)

EDIT:我希望它能输出给定循环正常输出的内容。在处理过程中似乎存在某种冲突。发布的没有循环的代码可以按预期工作,但当你使用php循环时,它就不起作用了。

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

我不认为可以使用for循环作为case语句的值。结果如下:

http://ideone.com/GXXMs

在没有看到真实代码和了解真实目标的情况下,我的最佳建议是在输入switch语句之前对循环进行预处理。

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

看起来您正在使用$_GET['page']调用从QueryString中获取值。如果您在URL语法中定义了"page"(例如:foo.php?page=page1),这将起作用。在本例中,您从不在查询字符串中定义名为"page"的变量,而是在URL末尾抛出#page1。这意味着您的switch语句中没有任何案例正在执行,因为它们与$_GET返回的null值不匹配。

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

使用正则表达式替换

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

当我将您的循环放入函数时:

函数testthis()

对于($i=0;$i<2;$i++){$page.=$i;}
}

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

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

因此——我的建议是——在循环之外声明$page,并将其设置为空字符串"。看看这是否解决了问题。

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