Table des matières
回复讨论(解决方案)
Maison développement back-end tutoriel php ajax POST json对象给PHP,PHP如何接收值

ajax POST json对象给PHP,PHP如何接收值

Jun 23, 2016 pm 01:54 PM
ajax json php post 接收

前端:

    $("#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);        }      });                            });
Copier après la connexion

PHP:
<?phpheader("Content-type: text/html; charset=UTF-8");$data = $_POST['data'];echo '<pre class="brush:php;toolbar:false">';print_r($data);?>
Copier après la connexion

通过 JSON.stringify 获取到的json格式如下:
 [{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]
Copier après la connexion

PHP,这里POST的接收值不知道用什么,如果把上面的json字符串改成如下格式,那么PHP即可接受到并直接返回数组格式
 {"data":[{ "name":"Bill" , "value":"Gates" },{ "name":"George" , "value":"Bush" },{ "name":"Thomas" , "value":"Carter" }]}
Copier après la connexion

总结下主要想问两个问题:

1、JQuery如何把serializeArray()获取到的json对象转换为 第二种格式的json字符串 且保证中文不会乱码

2、或者php如何直接接收 json对象 或者 第一种格式的 json字符串


回复讨论(解决方案)

1、JQuery如何把serializeArray()获取到的json对象转换为 第二种格式的json字符串 且保证中文不会乱码

保证不乱码,需要在header加入


第二种数组格式
var fields = $("#rss_form").serializeArray();
var t = {};
t['data'] = fields
fields = JSON.stringify(t);

2、或者php如何直接接收 json对象 或者 第一种格式的 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>
Copier après la connexion

demo.php
<?php$data = $_POST['data'];file_put_contents('test.log', $data, true);echo "ok";?>
Copier après la connexion


运行后:
test.log内容为[{"name":"中文","value":"中文"},{"name":"中文","value":"中文"},{"name":"中文","value":"中文"}]
如果没有加 则会乱码。

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"      });
Copier après la connexion
一段是不需要的。考虑的 IE 的缓存可能会影响效果,可以把 cache: false 作为 $.ajax 的参数
      $.ajax({        cache: false,        type: "POST",
Copier après la connexion

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'));
Copier après la connexion
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>
Copier après la connexion

去掉 fields = JSON.stringify(fields); 后

把 var fields = $("#rss_form").serializeArray();
改为  var fields = $("#rss_form").serialize();
把 data: {data : fields},
还原成 data: fields,


既然你是在学习 jquery 的 ajax 的使用,那么就该多做一些测试

太感谢了,非常感谢两位的解答

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

See all articles