zoukankan      html  css  js  c++  java
  • 如何用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不能包含分割符(这里是空格)。

  • 相关阅读:
    C# 操作配置文件
    C# Excel操作类
    没有找到 mspdb100.dll 的解决办法
    工厂方法模式
    .Net互操作2
    The certificate used to sign “AppName” has either expired or has been revoked. An updated certificate is required to sign and install the application解决
    手机抓包xcode自带命令行工具配合wireshark实现
    expecting SSH2_MSG_KEX_ECDH_REPLY ssh_dispatch_run_fatal问题解决
    使用ssh-keygen设置ssh无密码登录
    远程复制文件到服务器
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4051462.html
Copyright © 2011-2022 走看看