如何用Ajax传一个数组数据

PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便。但是还是有解决办法的,就是利用javascript做一下预处 理。多个同名复选框在javascript中还是以数组的形式存在的,所以在表单提交之前可以利用javascript把复选框中的信息组合成一个字符数 组赋值给表单中的隐藏元素,然后用PHP中的explode函数解析此数组,这样就可以实现复选框信息的传递了。下面举例说明。缙云县外国专家局

假设有这样一个表单:

<form name="form1" id="form1" method="post" action="http://www.nowamagic.net/index.php" onSubmit="return Checker()">
<input type="checkbox" name="item" value="1">1<br>
<input type="checkbox" name="item" value="2">2<br>
<input type="checkbox" name="item" value="3">3<br>
<input type="checkbox" name="item" value="4">4<br>
<input type="hidden" name="items" value="">
<input type="submit" value="Submit">
</form>

这个表单有四个名字都是item的复选框,当用户单击Submit按钮的时候,Checker函数会被调用,并且如果Checker返回true表单 就被提交,返回false表单就不会被提交。这里Checker函数就是我们要编写的预处理函数。在HTML的header部分添加下面的 javascript:

function Checker()
{
	form1.items.value = "";
	if ( !form1.item.length ) // 只有一个复选框,form1.item.length = undefined
 	{
  		if ( form1.items.checked )
  	 		form1.items.value = form1.item.value;
 	}
 	else
 	{
  		for ( i = 0 ; i < form1.item.length ; i++ )
  		{
   		if ( form1.item(i).checked ) // 复选框中有选中的框
   		{
   			form1.items.value = form1.item(i).value;
    			for ( j = i + 1 ; j < form1.item.length ; j++ )
   			{
    		 		if ( form1.item(j).checked )
    		 		{
      				form1.items.value += " "; //用空格做分割符
     				form1.items.value += form1.item(j).value;
    				}
   			}
   			break;
   		}
  		}
 	}
 	return true;
}

这样就可以把所有选中的复选框的value组合成为一个字符串数组,在myphp.php使用这样的语句:

$items = explode(" ", $HTTP_POST_VARS["items"]);

就可以把这些选项分离出来成为数组。需要注意的是选项中的value不能包含分割符(这里是空格)。

时间: 2024-12-01 09:26:00

如何用Ajax传一个数组数据的相关文章

ajax传参数组之request.getParameterValues

web项目中,一般与后台进行交互,都使用ajax进行数据的提交 在数据提交的过程中,一般为提交数据对象.但是在通常过程中,会使用到传入一系列的数据.如批量删除. 我们可以通过传入数组来实现 有以下几种方式:    1.直接传入一个对象数组 var param = [];            param.push({"name":"ids", "value":id});                        $.ajax({      

如何用AJax提交name[]数组?

今天开发的时候遇到了这么一个问题:Jquery的Ajax如何提交[name][]数组呢?众所周知 name后面加[]可以直接向服务器传输数组,但是Ajax不行,直接使用name[]会直接报错. 示例: $.ajax({ url:"${ctx}/addcart", type:"post", data:{“name[]”:$(".pid").val()}, dataType:"text", traditional : true,

ajax发送json格式数据

前后端在做数据交互的时候 一定一定要表明你所发的的数据到底是什么格式 前段后交互 你不能骗人家,不然后端开发人员来找你的时候会抄着一根凳子腿. 你的数据时什么格式 你就应该准确无误告诉别人是什么格式 那么怎么告诉后端你要发送的数据的格式是什么呢 form 表单是通过 他的 enctype 而 ajax 是通过 contentType,如果你要传送的数据是json(通常只有json格式) 你需要这么写 contentType:'application/json' 要怎样发送一个json格式的数据呢

AJAX 传递jison数组 ;前端循环辅助数组 -----解决方案

循环赋值给数组 var arrRow = new Array(); for(var i=0;i<checkedArr.length;i++){     arrRow[i] = checkedArr[i].FUN_ID; } ajax传json数组到后端  $.ajax({   url:  "role.do?method=funcRoleAdd",   type : "post", async : false, cache : false, data: {'ro

ajax传JSON时设置的contenttype导致JAVA中request.getParameter(&quot;&quot;)怎么也接收不到数据

ajax传JSON时设置的contenttype默认值是application/x-www-form-urlencoded, 当ajax传JSON时设置的contenttype 如果是application/json或者text/json时,JAVA中request.getParameter("")是接收不到数据的. 因为在java后台会认为你传递的是一个纯文本流,而非键值对,是不能存入requestMap的. 可以把流读取出来转成json转成lsit或对象等,在Spring中使用@R

用js通过url传参把数据从一个页面传到另一个页面

好长时间没写博客了,时值五一,外面到处人山人海,本宝宝还是好好呆在家学习吧.好了,言归正传.在没有后台支持的情况下,如何实现从一个页面像另一个页面来传递数据呢?应该很多人遇到过这个问题吧.那我就来说说我在项目中遇到的时候是如何解决的. 比如说,有两个页面,page1.html,和page2.html,在page1页面向page2页面传递数据可以通过hash值.上代码: page1.html的代码: 1 <!DOCTYPE html> 2 <html lang="en"

SpringMVC中出现&quot; 400 Bad Request &quot;错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法 今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求),调试了好长时间

给出一个数组,计算数组中少了哪个数据的实现

题目:给一个数组,长度为99.里面存储了从0到99中100个字符,求计算少了那个数未在数组中? 实现方法1:正向存储的思维,时间和空间复杂度为o(1) import java.math: public class findMissDate{      public void main(Strings[] args)      int arr[] = new int[99];      public int findmiss(){         int k= (int)(Math.Random(

说明如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢。注意PUSH和POP操作的时间应为O(1)。

校招开始了,发现自己数据结构,Algorithms的知识都还给老师了.喵了个呜的! <算法导论>开啃吧~ 从第三章数据结构开始吧~ 10.1-2 : 如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢.注意PUSH和POP操作的时间应为O(1). 解:思想是,建一维数组,两个栈stack1和stack2分别从数组A[0]和A[N-1]开始push,栈指针相遇时,两个栈中元素总数为n. 在思考怎么用java 实现,晚些时候 上代码吧~