0

私は最近、自分のウェブサイトをもう少し動的なものに変えようとしました。それはphpに大きく基づいており、ajaxでページを動的に変更することを調べてみました。しかし、php ループを ajax 経由でロードすると問題が発生しました。動的ページを可能にするためのスクリプトを調べました: 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はnullです。試す

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

あなたのループを関数に入れると:

function 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」という変数を定義せず、URL の末尾に #page1 をスローするだけです。これは、$_GET によって返される null 値と一致しないため、switch ステートメントのケースが実行されていないことを意味します。

クエリ文字列を解析して、「#」の後にあるものをすべて、case ステートメントで使用するパラメーターに取得してみてください。

于 2012-07-14T00:31:36.247 に答える