我有一个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 );
}
答案 0 :(得分:3)
您可以在action
中使用与AJAX使用的网址不同的<form>
网址。这样,您就可以正常工作<form>
后备,从而输出HTML。
或者,如果您只想为这两种方法使用一个URL,那么您可以查看发送的X-Requested-With
标头,并通过对值XMLHttpRequest
进行检查来识别AJAX请求。
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/* It's AJAX */
} else {
/* HTML fallback */
}
答案 1 :(得分:1)
尝试类似
的内容<form action="some.url?js=false"...
使用标记设置操作,说明没有可用的JavaScript
然后使用JavaScript将其删除
$('form').attr('action', "some.url");
然后在服务器端,您可以检查$_GET[js]
是否设置为仅回显json,否则为整页。