1

私はAjaxフォームを持っています。ここで、ユーザーが JavaScript を無効にしている場合に確実なフォールバックを提供したいと考えています。

これまでのところ、JavaScript がなくても動作しますが、ユーザーは JSON 文字列を結果としてスタイリングせずに空白の白に印刷するだけです。

echo json_encode( $arr );

これにスタイリングを追加するにはどうすればよいですか? echoHTML ページ全体が必要ですか? JSが無効になっているなどのリダイレクトを有効にすることはできますか?

PHP ビット全体は次のようになります。

if ( !empty( $invalidFieldArray ) ) {     
    // validation errors
    $arr = array( "status" => "error" , "data" => $invalidFieldArray );
    echo json_encode( $arr );      
} else {
    // all ok
    $arr = array( "status" => "success" );
    echo json_encode( $arr );
}
4

2 に答える 2

3

HTMLとAJAX

AJAXで使用されているものとは異なるactionURLを使用できます。<form>そうすれば、HTMLを出力する通常の<form>フォールバックを実行できます。

X-Requested-With

または、両方のメソッドに1つのURLのみを使用する場合は、X-Requested-With送信されたヘッダーを確認し、値と照合してAJAXリクエストを識別できますXMLHttpRequest

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  /* It's AJAX */
} else {
  /* HTML fallback */
}
于 2013-02-18T19:52:00.490 に答える
1

次のようなものを試してください

<form action="some.url?js=false"...

使用可能な JavaScript がないことを示すフラグを使用してアクションを設定します

次に、JavaScript を使用して削除します

$('form').attr('action', "some.url");

次に、サーバー側で、$_GET[js]設定されていないかどうか、json をエコーするだけかどうか、そうでない場合はページ全体を確認できます。

于 2013-02-18T19:45:39.700 に答える