1

我有一个 Ajax 表单。现在,如果用户停用了 JavaScript,我想提供一个可靠的后备。

到目前为止,它也可以在没有 JavaScript 的情况下工作,但是用户随后只会看到 JSON 字符串打印在没有样式的空白白色上,因为

echo json_encode( $arr );

如何为此添加样式?我必须要echo一个完整的 HTML 页面吗?是否可以为禁用的 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

You could use a different action URL in your <form> than the one used by AJAX. That way, you can have a normal working <form> fallback which outputs HTML.

X-Requested-With

Or, if you want to use only one URL for both methods, then you can have a look at the X-Requested-With header sent, and identify an AJAX request by checking it against the value 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 回答