<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// この記事と PHP 関連している,使用方法を示すために使用されます json_last_error_msg データ送信を最適化します</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------</span></span><span>
</span><span><span class="hljs-comment"># 使い方 json_last_error_msg フロントエンドとバックエンドの間のデータ送信形式を最適化する機能?</span></span><span>
現代では Web 開発真ん中,フロントエンドとバックエンドの間のデータの相互作用はほとんど分離できません JSON 形式。フロントエンドパス JavaScript データをにカプセル化します JSON 物体,バックエンドに渡します;バックエンドを使用します PHP 右 JSON 文字列の解析と処理。しかし,データ存在する传输和解析过程真ん中很容易出现形式错误,たとえば、エンコードの問題、見積もりまたは構文の不規則性がありません。これらのエラーが時間内にキャプチャされない場合,異常なプログラム操作やデータの損失を引き起こす可能性があります。为了更好地优化前后端之间的データ传输形式,`</span><span><span class="hljs-title function_ invoke__">json_last_error_msg</span></span><span>()` 機能は非常に実用的なツールになりました。
</span><span><span class="hljs-comment">## 1つ、何ですか `json_last_error_msg()`</span></span><span>
存在する PHP 真ん中,使用するとき `</span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>()` または `</span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>()` 関数時間,エラーが発生する可能性があります。PHP 提供された `</span><span><span class="hljs-title function_ invoke__">json_last_error</span></span><span>()` エラーコードを返します,しかし、これらのエラーコードは数字です,直感的ではありません。そして `</span><span><span class="hljs-title function_ invoke__">json_last_error_msg</span></span><span>()` 则会返回右应的错误信息弦,開発者が理解し、デバッグしやすくなります。
例:
```php
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-string">"{invalidJson: true}"</span></span><span>; </span><span><span class="hljs-comment">// 違法 JSON 弦</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">json_last_error</span></span><span>() !== JSON_ERROR_NONE) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"分析に失敗しました:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">json_last_error_msg</span></span><span>();
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>出力は次のとおりです。
<span><span>分析に失敗しました:Syntax </span><span><span class="hljs-type">error</span></span><span>
</span></span>このようにして、開発者はエラーコードのみに依存するのではなく、問題をすばやく見つけることができます。
データの整合性を確保する:送信プロセス中に、データ構造が損傷している場合、それは時間内に発見され、フロントエンドがそれを修正するように求められます。
ユーザーエクスペリエンスの向上:エラーメッセージは明確で明確であり、フロントエンドを容易にして問題を迅速に見つけ、通信コストを削減します。
システムの堅牢性の強化:エラー検出メカニズムを通じて、解析エラーによって引き起こされるビジネスロジックの中断は回避できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 假设フロントエンドパス AJAX 送信 JSON データ</span></span><span>
</span><span><span class="hljs-variable">$jsonInput</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">"php://input"</span></span><span>);
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$jsonInput</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">json_last_error</span></span><span>() !== JSON_ERROR_NONE) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">400</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>([
</span><span><span class="hljs-string">"status"</span></span><span> => </span><span><span class="hljs-string">"error"</span></span><span>,
</span><span><span class="hljs-string">"message"</span></span><span> => </span><span><span class="hljs-string">"無効 JSON 形式: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">json_last_error_msg</span></span><span>()
]);
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// 如果データ形式正确,ビジネスロジックを続けます</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>([
</span><span><span class="hljs-string">"status"</span></span><span> => </span><span><span class="hljs-string">"success"</span></span><span>,
</span><span><span class="hljs-string">"data"</span></span><span> => </span><span><span class="hljs-variable">$data</span></span><span>
]);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>このようにして、バックエンドはJSONの解析の問題をできるだけ早く発見し、フレンドリーなエラープロンプトを返すことができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$response</span></span><span> = [
</span><span><span class="hljs-string">"status"</span></span><span> => </span><span><span class="hljs-string">"success"</span></span><span>,
</span><span><span class="hljs-string">"message"</span></span><span> => </span><span><span class="hljs-string">"操作が完了しました"</span></span><span>,
</span><span><span class="hljs-string">"data"</span></span><span> => [</span><span><span class="hljs-string">"id"</span></span><span> => </span><span><span class="hljs-number">123</span></span><span>, </span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"ユーザーをテストします"</span></span><span>]
];
</span><span><span class="hljs-variable">$jsonOutput</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>(</span><span><span class="hljs-variable">$response</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">json_last_error</span></span><span>() !== JSON_ERROR_NONE) {
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"JSON コーディングに失敗しました:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">json_last_error_msg</span></span><span>());
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">500</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"服务器データ形式错误"</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$jsonOutput</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>これにより、フロントエンドにバックエンドで返されたJSONデータが常に合法で、解放可能になります。
フロントエンドのデータ送信では、JSONがコア形式です。ただし、処理プロセス中はエラーは避けられません。 JSON_LAST_ERROR_MSG()は、開発者にエラーをキャッチして説明する直感的な方法を提供します。これは、問題を迅速に見つけるのに役立つだけでなく、システムの堅牢性とユーザーエクスペリエンスを大幅に改善します。この関数をデータ受信と出力リンクに合理的に適用することにより、フロントエンドとバックエンドの間のデータ送信形式を効果的に最適化し、システム動作をより安定して信頼性を高めることができます。
<span></span>