在onchange上调用2个JS函数,并返回一些值

时间:2012-08-13 07:31:09

标签: php javascript ajax

我想在onc​​hange事件上调用twoJS函数,两个函数都返回一些值。它没有给我第二个函数输出:

我的PHP代码:

  <select name="lstTypex" id="lstTypex" onchange="javascript:showCondition(this.value);showInputType(this.value);">
     In options some values
  </select>
  <span id="condition" style="padding-left:19px;"></span>
  <span id="inputType" style="padding-left:19px;"></span>

我的Ajax代码:

// This function is used to submit for condition fields by ajax
function showCondition(colName) {

if (colName.length == 0) { 
    document.getElementById("condition").innerHTML="";
    return;
}
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("condition").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("GET","ajax/entity_report.php?colName="+colName+"&doAction=showCondition",true);
xmlhttp.send();
}

// This function is used to submit for condition fields by ajax
function showInputType(colName) {

if (colName.length == 0) { 
    document.getElementById("inputType").innerHTML="";
    return;
}
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("inputType").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("GET","ajax/entity_report.php?colName="+colName+"&doAction=showInputType",true);
xmlhttp.send();
} 

我的PHP-Ajax代码:

// include all required files for this screen
include("../include/common.php");
include(MODEL . "entity_report_class.php");

// create class object for class function access
$objCallUsers = new Entity_Report();

// call required class file functions 
$returnStr = "";
$arrTypex = $objCallUsers->fetch_data_type();
$typex = $arrTypex[$_REQUEST['colName']];

switch($_REQUEST['doAction']) {
case 'showCondition': 
    $arrCondition = array();
    if($typex == 'TB' || $typex == 'TA') {
        $arrCondition = array("Equal to","Not equal to","Starts with","Contains any part of word","Contains full word");
    }
    else if($typex == 'DD' || $typex == 'RD') {
        $arrCondition = array("Equal to","Not equal to");
    }

    $returnStr .= '<select name="lstCondition" id="lstCondition">
    <option>--Please Select--</option>';

    foreach ($arrCondition AS $condition) {
        $returnStr .= '<option>' . $condition . '</option>';
    }

    $returnStr .= '</select>';

break;

case 'showInputType': 
$arrCondition = array();
if($typex == 'TB' || $typex == 'TA') {
     $returnStr .= '<input type="text" name="conditionValue" id="conditionValue" value="" />';
}
else if($typex == 'DD' || $typex == 'RD') {
     $returnStr .= ' <select name="conditionValue" id="conditionValue"></select>';
}

break;
}

print($returnStr);

根据第二个函数调用给出输出。这两个函数都返回了一些东西。

1 个答案:

答案 0 :(得分:2)

您正在使用全局变量xmlhttp,第二个函数会覆盖它。您应该通过引入var关键字将其作为两个函数的本地函数。

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    var xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}