ホームページ >バックエンド開発 >PHPチュートリアル >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); } }); });
<?phpheader("Content-type: text/html; charset=UTF-8");$data = $_POST['data'];echo '<pre class="brush:php;toolbar:false">';print_r($data);?>
[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]
{"data":[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]}
1. JQuery はどのように機能するのかSerializeArray() で取得した json オブジェクトを変換します。 これは 2 番目の形式の json 文字列であり、中国語が文字化けしないようにします
文字化けしないようにするには、ヘッダーに追加する必要があります
7b6742b1cabb6d79d1b6292f84ac95c5
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>
<?php$data = $_POST['data'];file_put_contents('test.log', $data, true);echo "ok";?>
$.ajaxSetup({ cache:false, contentType : "application/x-www-form-urlencoded; charset=utf-8" });セクションは必要ありません。 IEのキャッシュが影響する可能性を考慮して、$.ajax
$.ajax({ cache: false, type: "POST",のパラメータとしてcache: falseを使用することができます
4. 説明を容易にするため。問題、私はテストを行った 例
php 側 jq_server.php
<xmp><?phpecho $s = print_r($_POST, 1);var_dump('is utf-8 ?', mb_check_encoding($s, 'utf-8'));html 側
<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>