在AJAX中要一次性传输n个JSON如何处理?

icony 2014-01-02 10:37:12
事情是这样的:
有个table,里面有n行,n不确定,我点一下保存按钮,就要把这n行都传到后端,后端进行分析处理存进数据库,然后根据处理结果返回一个值给前端。
我想到的是,一行一个JSON,但这n个JSON,我不知道怎么传给后端。
求教。
...全文
651 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
icony 2014-01-02
  • 打赏
  • 举报
回复
已解决,给分。
zhjdg 2014-01-02
  • 打赏
  • 举报
回复
http://localhost/html/1/ajaxj_query.php?q=[{%22name%22:%22zhang%22,%22age%22:36},{%22name%22:%22li%22,%22age%22:24},{%22name%22:%22wang%22,%22age%22:18}]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script type="text/javascript">
		function onajax() {
			var json = [ {
				"name" : "zhang",
				"age" : 36
			}, {
				"name" : "li",
				"age" : 24
			}, {
				"name" : "wang",
				"age" : 18
			} ];
			var $a = JSON.stringify(json);
			//$a = "[{"name":"zhang","age":36},{"name":"li","age":24},{"name":"wang","age":18}]";
			findX($a);
		}
		
		function findX(finder) {
			var xmlHttp;
			if (window.XMLHttpRequest)
				xmlHttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
			else
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
			if (xmlHttp == null) {
				alert("Browser does not support HTTP Request");
				return;
			}

			xmlHttp.onreadystatechange = function() {
				if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
					//var str = trim(xmlHttp.responseText);
					var str = xmlHttp.responseText;
					if (str == "") {
						alert("好像有问题,什么都没查到!");
						return;
					}

					//对str进行处理
					applyQueryX(str);
				}
			}

			var url = "ajaxj_query.php?q=" + finder + "&sid=" + Math.random();
			xmlHttp.open("GET", url, true);
			xmlHttp.send();
		}

		function applyQueryX(str) {
			alert(str);
		}
		onajax();
	</script>
</body>
</html>
<?php
header("Content-Type:text/html;charset=utf-8");

$q = $_GET["q"];
$t = json_decode($q);

//print_r($t);

echo 'success';
zhao_my_love 2014-01-02
  • 打赏
  • 举报
回复
把每个json串以特定的字符隔开,后台通过特定字符截取。 json1={"key1":"value1","key2":"value2"} 比如一行:json1@json2@json3 后台再通过以'@'去分隔,就可以得到一个json串的数组了
别闹腰不好 2014-01-02
  • 打赏
  • 举报
回复
[{},{},{}] 这样一个{}代表一行,
lxy8610061107 2014-01-02
  • 打赏
  • 举报
回复
json 数组
icony 2014-01-02
  • 打赏
  • 举报
回复
完整的代码是这样: 首先,前端的JS代码,是由一个按钮触发的: function onajax() { var json = [ {"name":"zhang", "age": 36}, {"name":"li", "age": 24}, {"name":"wang", "age": 18} ]; findX(json); } function findX(finder) { var xmlHttp; if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari else xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 if(xmlHttp == null) { alert("Browser does not support HTTP Request"); return; } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState==4 && xmlHttp.status==200) { var str = trim(xmlHttp.responseText); if(str == "") { alert("好像有问题,什么都没查到!"); return; } //对str进行处理 applyQueryX(str); } } var url = "ajaxj_query.php?q=" + finder + "&sid=" + Math.random(); xmlHttp.open("GET", url, true); xmlHttp.send(); } function applyQueryX(str) { alert(str); } 下面是后台PHP代码: <?php header("Content-Type:text/html;charset=utf-8"); $q = $_GET["q"]; echo $q[1]->name; ?> 很多书上讲AJAX的例子,都是这种写法,我是刚学,照着写的。 如果是传单个的JSON,一点问题都没有,而且,还解决了JSON传中文的问题(那个要在JS端ENCODE再在后台DECODE)。现在,传JSON数组,先来个最简单的字母和数字传输,结果就遇到了问题,按钮按下去,出来一堆错误提示。
zhjdg 2014-01-02
  • 打赏
  • 举报
回复
首先,我不知道你咋传, 其次,我不知道你如何接收。
icony 2014-01-02
  • 打赏
  • 举报
回复
用JSON数组好像不行哦。 我在前端创建一个数组(为了减小难度,先不整中文): var json = [ {"name":"zhang", "age": 36}, {"name":"li", "age": 24}, {"name":"wang", "age": 18} ]; 在JS端,看起来没有问题的,json[0].name之类的可以正常调用。 但是,一旦把json传输给后端,如下: $q = $_GET["q"]; echo $q[0]->name; 运行到echo这句就报错了,何解?
keanx006 2014-01-02
  • 打赏
  • 举报
回复
JSONArray
tony4geek 2014-01-02
  • 打赏
  • 举报
回复
json 数组传递。

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧