解决方案 »
- 请教如何分析程序运行日志
- mysql_fetch_object问题
- 仅为怀念jobs
- xp sp2 下安装php 出现 The specified module could not be found.
- 紧急求救---php文件数据库怎样连接mysql
- 互联网企业对PHP人才的需求分析(本站新闻) (转贴)
- php中用utf-8编码无法更改header的问题
- 以最高分回报:两个时间相减,怎样才能得到相差的分钟数? 请各位敬爱的高手帮一下忙!
- PHP,21世纪的霸主
- 请教,有没有什么方法把PHP文件编译,制作成软件呢?
- 大神看下这个导航菜单在smarty里怎么循环出来呢?
- 求同一列不同条件形成的两行的时间差的sql语句
<meta http-equiv="content-type" content="text/html; charset=utf-8">第二种数组格式
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>demo.php<?php
$data = $_POST['data'];
file_put_contents('test.log', $data, true);
echo "ok";
?>
运行后:
test.log内容为[{"name":"中文","value":"中文"},{"name":"中文","value":"中文"},{"name":"中文","value":"中文"}]
如果没有加<meta http-equiv="content-type" content="text/html; charset=utf-8"> 则会乱码。
2、jq 的 post 方式已经发了 application/x-www-form-urlencoded 头,也不需要你再劳动了
所以 $.ajaxSetup({
cache:false,
contentType : "application/x-www-form-urlencoded; charset=utf-8"
});
一段是不需要的。考虑的 IE 的缓存可能会影响效果,可以把 cache: false 作为 $.ajax 的参数 $.ajax({
cache: false,
type: "POST",3、JSON.stringify 是 json2.js 类库提供的,不属于 jq 的范畴。所以 jq 并不需要使用他来加工数据
况且 JSON.stringify 将对象(数组)转换成了 json 格式串,用它发送时,服务端还需解码
4、为了便于说明问题,我做了一个测试例
php 端 jq_server.php<xmp>
<?php
echo $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>
去掉 fields = JSON.stringify(fields); 后把 var fields = $("#rss_form").serializeArray();
改为 var fields = $("#rss_form").serialize();
把 data: {data : fields},
还原成 data: fields,
既然你是在学习 jquery 的 ajax 的使用,那么就该多做一些测试