像这是我的表格的选择框
<select name="cutid" onchange="findcustid(this.value)">
<option value="1001">cust 1</option>
<option value="1002">cust 2</option>
<option value="1003">cust 3</option>
</select>
现在我有这个ajax代码传递并填充一些选择框
function findcustid(custid) {
var custid = custid;
}
function Inint_AJAX() {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {} //IE
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {} //IE
try {
return new XMLHttpRequest();
} catch (e) {} //Native Javascript
alert("XMLHttpRequest not supported");
return null;
};
function dochange(src, val) {
var req = Inint_AJAX();
req.onreadystatechange = function () {
if (req.readyState == 4) {
if (req.status == 200) {
document.getElementById(src).innerHTML = req.responseText; //retuen value
}
}
};
req.open("GET", "podetfill.php?data=" + src + "&val=" + val + "&custid=" + custid); //make connection
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-1"); // set Header
req.send(null); //send value
}
window.onLoad = dochange('proid', -1); // value in first dropdown
在这一行
req.open("GET", "podetfill.php?data="+src+"&val="+val+"&custid="+custid);
上面代码的我添加了+"&custid="+custid
这个,但它在custid
页面上没有传递podetfill.php
并且收到错误
Error: custid not defined
答案 0 :(得分:2)
由于以下原因,您无法使用您的方法:
var custid
在函数中声明 - 因此只能在该函数中访问var custid
被声明为全局,您仍然无法使用它,因为使用window.load
事件执行AJAX意味着select.change
事件尚未被触发一种解决方案是在使用之前获取select
的值:
var cus = document.getElementById('custid');
var custid = cus.options[cus.selectedIndex].value;
req.open("GET", "podetfill.php?data=" + src + "&val=" + val + "&custid=" + custid); //make connection
您还需要提供select
id
属性才能使用此代码:
<select id="custid" name="cutid" onchange="findcustid(this.value)">
答案 1 :(得分:1)
将var custid
的声明移到函数之外。 dochange
函数
答案 2 :(得分:0)
这对我有用,下面有小提琴链接。
<select name="report_type" onchange="alert(this.options[this.selectedIndex].value);">
<option value="1001">cust 1</option>
<option value="1002">cust 2</option>
<option value="1003">cust 3</option>
</select>
答案 3 :(得分:0)
当你加载窗口时发送你的ajax请求(通过window.onLoad = dochange('proid',-1);)当你还没有进行customerid选择时,它是未定义的或者是null。
请在您的选择上发送您的ajax请求。
<select name="cutid" onchange="dochange('proid', -1)" >
并在docinnge函数的开头添加以下内容,如ManiseUK所述。
var cus = document.getElementById('custid');
var custid = cus.options[cus.selectedIndex].value;
除去
window.onLoad = dochange('proid', -1);
答案 4 :(得分:-1)
<select name="report_type" onchange="findcustid(this.options[this.selectedIndex].value);">
<option value="1001">cust 1</option>
<option value="1002">cust 2</option>
<option value="1003">cust 3</option>
</select>
<script lang="javascript" type="text/javascript" >
function findcustid(custid) {
var custid = custid;
//alert(custid);
}
</script>