Ajax形式:后备造型

时间:2013-02-18 19:40:59

标签: php javascript jquery ajax forms

我有一个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 );
}

2 个答案:

答案 0 :(得分:3)

HTML和AJAX

您可以在action中使用与AJAX使用的网址不同的<form>网址。这样,您就可以正常工作<form>后备,从而输出HTML。

X-请求-随着

或者,如果您只想为这两种方法使用一个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,否则为整页。