/** * 将HTML标签转义后输出JSON数据 * * @param mixed $data * @return void */ public static function echoJson($data) { echo self::jsonEncode(is_array($data) ? WindSecurity::escapeArrayHTML($data) : WindSecurity::escapeHTML($data)); }
public function afterAction($handlerAdapter) { parent::afterAction($handlerAdapter); $debug = Wekit::C('site', 'debug') || !Wekit::C('site', 'css.compress'); Wekit::setGlobal(array('debug' => $debug ? '/dev' : '/build'), 'theme'); $this->setTheme('site', null); /* @var $resource WindLangResource */ $resource = Wind::getComponent('i18n'); $_error = $this->getForward()->getVars('message'); if ($resource !== null) { foreach ($_error as $key => $value) { if (is_array($value)) { list($value, $var) = $value; } else { $var = array(); } $message = $resource->getMessage($value, $var); $message && ($_error[$key] = $message); } } $this->getForward()->setVars(array('message' => $_error, '__error' => '')); $type = $this->getRequest()->getAcceptTypes(); // 如果是含有上传的递交,不能采用ajax的方式递交,需要以html的方式递交,并且返回的结果需要是json格式,将以json=1传递过来标志 $json = $this->getInput('_json'); $requestJson = $this->getRequest()->getIsAjaxRequest() && strpos(strtolower($type), "application/json") !== false; if ($requestJson || $json == 1) { $this->getResponse()->setHeader('Content-type', 'application/json; charset=' . Wekit::V('charset')); $vars = $this->getForward()->getVars(); isset($vars['referer']) && ($vars['referer'] = rawurlencode($vars['referer'])); foreach ($vars as $key => $value) { if ($key == 'html') { continue; } $vars[$key] = WindSecurity::escapeArrayHTML($value); } echo Pw::jsonEncode($vars); exit; } }