2012-08-13 128 views
0

我想在onc​​hange事件上调用两个JS函数,并且这两个函数都返回一些值。它不会给我的第二个功能输出:在onchange上调用2个JS函数并返回一些值

我的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); 

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

+0

尝试从第一功能中调用的第二个功能,并使用一些带有的console.log萤火虫调试流 – 2012-08-13 07:34:46

+0

标题是ambigous - 你不返回任何值。另外,在提问时考虑正确的缩进 - 这会使其更具可读性。 :) – 2012-08-13 08:07:42

+0

ohk ... il确保dis next tym。 – 2012-08-13 08:22:46

回答

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"); 
} 
+0

嘿thanx ...它的工作.. – 2012-08-13 08:17:27

相关问题