PHP - 显示Json编码的消息

时间:2012-01-09 22:01:10

标签: php jquery json

我正在用JQuery和PHP构建一个ajax表单。 PHP文件验证提交的数据并发送回json编码的消息。但是,如果关闭了javascript,则消息如下所示:

{"error":true,"msg":"- Please enter your name!"}

如果浏览器中没有启用javascript,会使用什么方法显示消息?

这是我目前用来将消息发送回JQuery的PHP函数:

function mcResponseMessage($mcRespBool, $mcRespMessage){
   $mcReturn['error'] = $mcRespBool;
   $mcReturn['msg'] = '- '.$mcRespMessage;
   echo json_encode($mcReturn);
   exit();

}

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以在AJAX请求中放置一个标志,声明它是一个AJAX请求,因此您可以为AJAX请求输出JSON,并在正常提交表单时输出消息:

$.ajax({
    data : { ajax : true }
    ...the rest of your AJAX code here
});

然后在你的PHP脚本中:

if (isset($_GET['ajax']) && $_GET['ajax'] == true) {
    echo json_encode(array('error' => true, 'msg' => '- Please enter your name!'));
} else {
    echo '- Please enter your name!';
}

请注意,如果您使用的是post类型的AJAX调用,那么PHP需要更改为引用该事实:$_POST['ajax']而不是$_GET['ajax']

答案 1 :(得分:1)

如果禁用Javascript,则无法对JSON响应执行任何操作。如果您想支持禁用脚本的用户,那么您必须以更好的方式编排事物:

  1. 提交时将表单POST到服务器;如果存在某些错误(即使用PRG pattern),服务器应验证输入并重定向到“成功”页面或返回到同一页面。在重定向之前,请在会话变量中保存任何验证错误,以便在重定向后显示它们。这是非JS启用的客户端与您的站点交互的方式; 服务器永远不会以此模式返回JSON
  2. 添加阻止表单提交的Javascript,并向服务器发出AJAX请求以验证数据。实际上,您现在已经劫持了启用脚本的用户的过程。服务器应该运行与上面相同的验证代码,但是这次你应该检测到它是一个AJAX请求(例如通过使用一些特殊的HTTP头或请求变量),而不是将错误保存到会话变量和重定向,你应该转换它们进入JSON表单并返回它们。
  3. 当验证AJAX返回时,处理响应并采取相应的行动。

答案 2 :(得分:0)

如果未启用javascript,则无论如何都不会执行jQuery调用。你的应用程序将会死亡。我建议在页面加载时检查JS,这会让你知道你是否可以使用你的jQuery函数,或者你是否必须使用帖子。