簡體   English   中英

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

它什么也沒做。 有任何想法嗎? :)

編輯:我期望它輸出給定循環通常輸出的內容。 處理它時似乎存在某種沖突。 所發布的無循環代碼按預期工作,但是當您使php循環生效時,它將無法工作。

EDIT2:我已經確定問題是循環,所以我認為沒有必要帶出我正在使用的代碼。 我僅以一個簡單的循環為例。 該代碼基本上只是遍歷數據庫中的數據條目並輸出它們。 如果有人可以指出為什么這行不通,並且有解決方法,我很樂意。 :P

我不認為您可以將for循環用作case語句的值。 看到下面的結果:

http://ideone.com/GXXMs

最好的建議是在看不到實際代碼和實際目標的情況下, 輸入switch語句之前對循環進行預處理。

也許問題在於沒有試圖在PHP案例中執行循環。

看來您正在使用$ _GET ['page']調用從QueryString中獲取值。 如果您在URL語法中定義了“頁面”(例如:foo.php?page = page1),這將起作用。 在此示例中,您永遠不會在查詢字符串中定義名為“ page”的變量,而只是在URL末尾拋出#page1。 這意味着switch語句中沒有任何一種情況正在執行,因為它們與$ _GET返回的空值不匹配。

嘗試解析查詢字符串,以獲取在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()
{
for($ i = 0; $ i <2; $ i ++){$ page。= $ i;};
}

它將引發錯誤:“注意:未定義的變量:demo.php中的頁面”

當我在循環外聲明$ page時,只需將其放在行中:$ page =“”; 它有效-沒有錯誤。

所以-我的建議-在循環外聲明$ page並將其設置為空字符串“”。 查看是否可以解決問題。

根本原因似乎是您將字符串連接到尚未聲明的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM