如附件图,
我想做个程序,部门里面包含有各个小工序,每个部门的工序不一样。我又想进行异步传输的方式,这样我把AJAX做了。连接也可以了,返回的数据也正确了。就是不知道怎么把返回的一组数据写到表单项的列表项目中。因为列表的代码是<select>标签包含了<option>标签的。
我要实现的功能是。当我选择部门的时候,将会出现这个部门所属的工序。这个我在数据库中是有设置的。并且获取这个数据也是很容易的,请参看我下面的PHP判断代码。
不像将返回值写到文本框或者是<DIV>标签。
如:JS脚本中,返回值到INPUT和DIV的写法是:
document.getElementById("xxx").value = response[1];
document.getElementById("xxx").innerHTML = "<img src = '../images/check_right.gif'>"
写列表我就不知道了,因为要写2个数据。
我传递数据的表单都做好了,如下。
<select name="dp1" onChange="getCustomerInfo()">
<?
while($row = @mysql_fetch_array($result))
{
?>
<option value="<? echo $row["dp_name"] ?>" selected><? echo $row[0] ?></option>
<? }?>
</select>
PHP判断程序也做好了.使用传递过去的数据查询数据库后,获得查询结果的数量以及循环将结果输出。JS脚本以 | 为分割进行赋值到数组当中。
<?php
$dp_shu = trim($_GET["dpshu"]);
echo "1"."|";
@require_once("../inc/mysql_db.php");
$strstuff1 = "select id,dp_name from {$tablename}_department where dp_shu = '$dp_shu'";
$result = @mysql_query($strstuff1,$myconn);
$num = @mysql_num_rows($result);
echo "$num"."|";
while($row = @mysql_fetch_array($result))
{
echo $row["dp_name"];
echo "|";
}
/////////
}
?>
下面看JS脚本
<?php
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
if (!request)
{
alert("Error initializing XMLHttpRequest!");
}
//////////以上是检测浏览器版本,并且赋予方法
////以下是传递数据
function getCustomerInfo() {
var dpid = document.getElementById("dp1").value;
var url = "order_action.php?action=dpname&dpshu=" + escape(dpid)+"&sid="+ Math.random();
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4)
{
//////
var response = request.responseText.split("|"); //获取值后以 | 为分割为数组,赋值给 response
if (request.status == 200)
{
////////
if(response[0] == "1")
{
//document.getElementById("stuff1").value = response[1];
//document.getElementById("stuff2").value = response[2]; //将值传递给表单元素
/*
if(response[1] != "0")
{
var num = response[1]; //我最初的想法是将获取的数量,传递到JS脚本,再由循环将PHP脚本中输出的数据循环赋值给表单元素
while(var i = 2;i<=num+2;i++)
{
document.getElementById("dp2").value = response[i]; //将值传递给DIV标签
document.getElementById("stuffstat1").value = response[1];
}
}else{
alert(request.responseText); //出错,就弹出对话框
}
}else{
alert(request.responseText); //出错,就弹出对话框
}
/////////
} else{
alert("status is " + request.status); //如果返回结果过程出错的提示
}
////////
}
}
*/
?>
我最初的想法是将获取的数量,传递到JS脚本,再由循环将PHP脚本中输出的数据循环赋值给表单元素。但是又遇到列表是2个数据。都不知道怎么写了,被注释起来的是我写到一半的东西,我想不下去了。
不知道,有没人用过这个东西。我要怎么把输出的数据获取到值后,传递给表单元素。