2014-02-20 58 views
0

嗨,請幫助我解決這個問題。我想要下拉選定的值以反映另一個文本字段。爲此,我設置onChange函數並使用ajax返回選定的值。我將返回值設置爲一個php變量/會話,以便我可以在頁面中使用它。該值已成功返回,但僅顯示。我將它隱藏起來,但不知道如何將它轉換爲變量。如何將下拉值(使用ajax)作爲變量返回

<select name="txtService" id="txtService" onchange="showService(this.value)"> 
    <option value="0">Select Service</option> 

<?php 
    $sql = "select * from tab_service where service_active = 1 Order By service_name"; 
    $query = $db->ExecuteSelect($sql); 
    while ($row = mysql_fetch_object($query)) { 
     echo "<option value='".$row->service_id."'>".$row->service_name."</option>"; 
    } 
?> 

</select> 
<div id="div1"></div> 

我的Ajax獲得,並返回所選擇的值DIV1:在booking2.php

<script type="text/javascript"> 
    function showService(str) { 
     if (str == "") { 
      document.getElementById("div1").innerHTML; 
      return; 
     } 
    var xhr = false; 
    if (window.XMLHttpRequest) { 
     // IE7+, Firefox, Chrome, Opera, Safari 
     xhr = new XMLHttpRequest(); 
    } 
    else { 
     // IE5/IE6 
     xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    if (xhr) { 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4 && xhr.status == 200) { 
       document.getElementById("div1").innerHTML = xhr.responseText; 
      } 
     } 
     xhr.open("GET", "booking2.php?q="+str, true); 
     xhr.send(null); 
    } 
} 

這裏:

<?php 
session_start(); 

$vals = @$_REQUEST['q']; 
$_SESSION['SelectValue']=$vals; 
?> 
<input type="hidden" name="selectedServID" value="<?php echo $_SESSION['SelectValue']; ?>"> 
+0

我將返回值$ _SESSION ['SelectValue']設置爲隱藏輸入。但似乎不工作。 '<?php \t session_start(); \t $ vals \t = \t @ $ _ REQUEST ['q']; \t $ _SESSION ['SelectValue'] = $ vals; ?> \t 」>' – jeliey

+0

你爲什麼要設置ajax呼叫值的任何元素本身..你不能用JavaScript設置PHP變量。 javascript是一種客戶端腳本語言。 http://jsfiddle.net/FwTgb/如果這符合您的要求,請參考 –

+0

@Harshada Chavan,您應該對您所做的代碼做出回答,因爲OP正在使用它 – 2014-02-20 08:25:44

回答

0

您可以更改:

<select name="txtService" id="txtService" onchange="showService(this.value)"> 

這樣:

<select name="txtService" id="txtService" onchange="showService(this.options[this.selectedIndex].value)"> 

更新:

if (str == "") { 
     document.getElementById("div1").innerHTML;  // ?!?!?!? what is this doing 
     return; 
    } 

另外:

xhr.open("GET", "booking2.php?q="+str, true); 

更好地爲發送:

var uri = encodeURIComponent("booking2.php?q="+str); 
    xhr.open("GET", uri, true); 

另外,你能告訴我什麼str包含在函數的開始?

+0

謝謝,但你能解釋一些細節因此它只返回並顯示值。我想把它作爲一個變量,以便我可以在我的php代碼中使用它,如'if($ _ SESSION ['SelectValue'] == 1){something here} else {else else}'。嘗試使用隱藏的領域,但不工作... – jeliey

+0

上述方法只是爲了兼容性,一些瀏覽器可能不喜歡只是'this.value' ..我更新了我的帖子 – 2014-02-20 08:01:16

+0

我只是改變了我的代碼,作爲@哈沙達Chavan建議。在這裏它是:'平變化= '的javascript:showService(本);''和我的腳本:'<腳本類型= 「文本/ JavaScript的」> \t功能showService(selObj){ \t \t \t document.forms [f中'] .selectedService.value = selObj.options [selObj.options.selectedIndex] .value; \t} '然後在這裏顯示的值''但是如何將值設置爲$ variable? – jeliey

0
session_start(); 

$vals = @$_REQUEST['q']; 
$_SESSION['SelectValue']=$vals; 
echo $_SESSION['SelectValue']; 
+0

亞我did.but它只會顯示結果。當我在代碼中使用$ _SESSION ['SelectValue']時,它不起作用。像它是空的,沒有價值 – jeliey

相關問題