getHeaders()->set('Content-Type', 'text/plain; charset=UTF-8'); //$response->getHeaders()->set("Access-Control-Allow-Origin","*"); if ($response->data !== null) { $options = $this->encodeOptions; if ($this->prettyPrint) { $options |= JSON_PRETTY_PRINT; } $errcode = 0; $msg = ''; $data = []; if (!$response->isSuccessful) { $response->statusCode = 200; $errcode = -1; if (Yii::$app->errorHandler->exception) { // if(Yii::$app->errorHandler->exception instanceof ) if (isset(Yii::$app->errorHandler->exception->statusCode)) { $errcode = Yii::$app->errorHandler->exception->statusCode; } elseif (Yii::$app->errorHandler->exception->getCode() > 0) { $errcode = Yii::$app->errorHandler->exception->getCode(); } else { $errcode = $this->defaultErrorCode; } $msg = YII_DEBUG ? Yii::$app->errorHandler->exception->getMessage() : '服务器内部错误'; } } else { $data = $response->data; } $response->data = self::formatData($data, $errcode, $msg); // var_dump($response->data);exit; // if(!$response->isSuccessful){ // $response->statusCode = 200; // if($response->data['code']>20000) // $code = $response->data['code']; // else // $code = ErrorCode::APP_EXCEPTION; // $redirect = ''; // $response->data = BController::ApiResponse([],$response->data['message'],$code,$redirect); // } // if(isset(Yii::$app->params['response_encrpyt']) && Yii::$app->params['response_encrpyt']){ // $encryption = new MCrypt(); // $response->content = $encryption->encrypt(Json::encode($response->data, $options)); // }else{ $response->content = Json::encode($response->data, $options); // } } } /** * Formats response data in JSONP format. * @param \yii\web\Response $response */ protected function formatJsonp($response) { $response->getHeaders()->set('Content-Type', 'application/javascript; charset=UTF-8'); if ($response->data !== null) { $options = $this->encodeOptions; if ($this->prettyPrint) { $options |= JSON_PRETTY_PRINT; } if (!$response->isSuccessful) { $response->statusCode = 200; if ($response->data['code'] > 20000) $code = $response->data['code']; else $code = $this->defaultErrorCode; $redirect = ''; // $response->data = BController::ApiResponse([],$response->data['message'],$code,$redirect); } // if(isset(Yii::$app->params['response_encrpyt']) && Yii::$app->params['response_encrpyt']){ // $encryption = new MCrypt(); // $response->content = $encryption->encrypt(Json::encode($response->data, $options)); // }else{ // $response->content = Json::encode($response->data, $options); // } } $response->data = ['data' => $response->data, 'callback' => Yii::$app->getRequest()->get('callback')]; if (is_array($response->data) && isset($response->data['data'], $response->data['callback'])) { $response->content = sprintf('%s(%s);', $response->data['callback'], Json::htmlEncode($response->data['data'])); } elseif ($response->data !== null) { $response->content = ''; Yii::warning("The 'jsonp' response requires that the data be an array consisting of both 'data' and 'callback' elements.", __METHOD__); } } }