2016-03-31 52 views
0

使用AJAX和PHP可以獲得多個響應嗎?使用AJAX和PHP獲取multipe響應

事件由選擇框觸發,當它改變值(onchange)時,它調用JavaScript函數並獲取xmlhttp.responseText

但是在responseText我們只能根據id更改一個值/ innerHtml。 我想使用AJAX更改2個或更多HTML。可能嗎?

這裏是我的AJAX功能:

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("txtStockQTY"+baris).value = "Validating.."; 
    } 
    else if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     document.getElementById("txtStockQTY"+baris).value = xmlhttp.responseText; 
    } 
} 

xmlhttp.open("GET", "ajaxGetStock.php?id="+id, true); 
xmlhttp.send();` 

而且ajaxGetStock如下:

$idbarang = $_GET['id']; 
include "../connect.php"; 

$resultSetStockType = mysql_query("SELECT STOCK_QTY,STOCK_QTYUNIT,STOCK_SIZE,STOCK_SIZE2 FROM TSTOCK WHERE STOCK_ID = $idbarang",$con); 

if($resultSetStockType and mysql_num_rows($resultSetStockType) > 0) { 
    while($rowSetStockType = mysql_fetch_array($resultSetStockType)) { 
     echo $rowSetStockType['STOCK_QTY']." ".$rowSetStockType['STOCK_QTYUNIT']; 
    } 
} 
else { 
    echo "--- stok tidak ditemukan ---"; 
} 

我想從我的AJAX獲得幾個返回值,並將其分配給文本類型的多個輸入。

+1

請勿使用mysql_ *方法,因爲它們已被廢棄並且自PHP 7起已被刪除。 – Ikari

+1

我建議你使用像「JSON」這樣的格式化文本:http://www.w3schools.com/js/js_json.asp – DiD

+0

**危險**:您正在使用[an **過時的**數據庫API](http: //stackoverflow.com/q/12859942/19068)並且應該使用[現代替換](http://php.net/manual/en/mysqlinfo.api.choosing.php)。你很容易受到[SQL注入攻擊](http://bobby-tables.com/)**現代的API會使它更容易[防禦](http://stackoverflow.com/questions/60174/最好的方式,以防止SQL注入在PHP)自己從。 – Quentin

回答

1

返回JSON像這樣在PHP:

​​3210

然後在JS:

var data = JSON.parse(xmlhttp.responseText); 
document.getElementById("txtStockQTY"+baris).value = data.firstValue; 

注:我討厭jQuery的,除了一兩件事:Ajax調用。我建議您使用它以避免所有這些代碼難以閱讀:)

0

不需要直接從數據庫中回顯結果,您需要將它們存儲在數組中並回顯JSON編碼數組。

$array = array(); 
while($rowSetStockType = mysql_fetch_array($resultSetStockType)){ 
    $tempval = $rowSetStockType['STOCK_QTY']." ".$rowSetStockType['STOCK_QTYUNIT']; 

    $array.push($tempval); 
} 

//When its done processing all the returned values, echo json_encoded array. 

echo json_encode($array); 

然後,您將可以從javascript訪問數組。

+0

謝謝你的答案我會嘗試它! – user3859812

0

有幾種方法可以解決這個問題,我會盡力解釋一些問題。

返回HTML元素

返回HTML代碼從您的AJAX代碼輸入,並將其與使用innerHTML代替.value像你現在這樣添加一個div。

返回JSON

返回的代碼與json_encode JSON對象和使用JavaScript JSON函數來填充你的投入。在我輸入此信息時,Alan Tan已經爲您提供了一個示例。