如何通过javascript传递选择值?

时间:2012-05-17 08:08:04

标签: javascript

像这是我的表格的选择框

<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

5 个答案:

答案 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>

http://jsfiddle.net/ymutlu/JVrwL/

答案 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>