ajax POST json オブジェクトを PHP に送信します。PHP はどのように値を受け取りますか
フロントエンド:
$("#save_config_btn").click(function(){ $.ajaxSetup({ cache:false, contentType : "application/x-www-form-urlencoded; charset=utf-8" }); var fields = $("#rss_form").serializeArray(); fields = JSON.stringify(fields) //中文会乱码 $.ajax({ type: "POST", url : "edit.php", data: fields, success: function(msg){ alert(msg); } }); });
PHP:
<?phpheader("Content-type: text/html; charset=UTF-8");$data = $_POST['data'];echo '<pre class="brush:php;toolbar:false">';print_r($data);?>
JSON.stringify で取得した json 形式は次のとおりです:
[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]
PHP、ここで上記の json の場合、POST の受信値に何を使用すればよいかわかりません。文字列が次の形式に変更されると、PHP は配列形式を受け入れて直接返すことができます
{"data":[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]}
要約すると、主に 2 つの質問をしたいと思います:
1. JQuery は、serializeArray() によって取得された json オブジェクトをどのように変換しますか? 2 番目の形式の json 文字列を使用し、中国語が文字化けしないことを確認します
2. または、PHP が最初の形式の json オブジェクトまたは json 文字列を直接受け取る方法
ディスカッション (解決策) への返信
1. JQuery はどのように機能するのかSerializeArray() で取得した json オブジェクトを変換します。 これは 2 番目の形式の json 文字列であり、中国語が文字化けしないようにします
文字化けしないようにするには、ヘッダーに追加する必要があります
2 番目の配列形式
var field = $("#rss_form").serializeArray();
var t = { 2. または、php は最初の形式で json オブジェクトまたは json 文字列を直接受け取るにはどうすればよいでしょうか。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <title> js test </title> </head> <body> <script type="text/javascript"> var fields = [{ "name":"中文" , "value":"中文" },{ "name":"中文" , "value":"中文" },{ "name":"中文" , "value":"中文" }]; fields = "data=" + JSON.stringify(fields); $.ajax({ type: "POST", url : "demo.php", data: fields, success: function(msg){ alert(msg); } }); </script> </body></html>
Demon.php
<?php$data = $_POST['data'];file_put_contents('test.log', $data, true);echo "ok";?>
実行後:
test.log 内容は [{"name":"中文","value":"中文"},{"name":"中文","value ":"中文"},{"名前":"中文","値 ":"中文"}]
If を追加しないと文字化けします。
1. Ajax 自体は utf-8 エンコーディングで送信されるため、charset=utf-8 ステートメントは必要ありません
2. jq の post メソッドはすでに application/x-www-form-urlencoded ヘッダーを送信しています。そしてあなたは必要ありません これ以上の労力は必要ありません
したがって、
$.ajaxSetup({ cache:false, contentType : "application/x-www-form-urlencoded; charset=utf-8" });
$.ajax({ cache: false, type: "POST",
3. JSON.stringifyはjson2.jsクラスライブラリによって提供されており、jqのカテゴリには属しません。そのため、jq はデータを処理するためにそれを使用する必要はありません さらに、JSON.stringify はオブジェクト (配列) を json 形式の文字列に変換して送信しますが、サーバーはそれをデコードする必要があります
4. 説明を容易にするため。問題、私はテストを行った 例
php 側 jq_server.php
<xmp><?phpecho $s = print_r($_POST, 1);var_dump('is utf-8 ?', mb_check_encoding($s, 'utf-8'));
<script src=scripts/jquery-1.11.0.min.js></script><script src=scripts/json2.js></script><script>$(function() { $("#save_config_btn").click(function(){ var fields = $("#rss_form").serializeArray(); fields = JSON.stringify(fields); $.ajax({ cache: false, type: "POST", url : "jq_server.php", data: {data : fields}, //注意这里的写法 success: function(msg){ alert(msg); } }); });});</script><form id='rss_form'><input type=text name='比尔' value='大门'></br><input type=text name='乔治' value='布什'></br><input type=text name='托马斯' value='卡特'></br><input type=button id=save_config_btn value='ok'></form>
フィールド = JSON.stringify(fields); を削除し、
var フィールド = $("#rss_form").serializeArray(); を
に変更します。 var field = $("# rss_form").serialize();
data: {data :fields},
to data:fields,
jquery の ajax の使用方法を学習しているので、さらにテストを行う必要があります
どうもありがとうございます はい、お二人ともご回答いただき、誠にありがとうございます

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
