使用AJAX和PHP获取多重响应

时间:2016-03-31 10:04:43

标签: php html ajax xampp

是否可以使用AJAX和PHP获得多个响应?

由选择框触发的事件,当它更改值(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中获取几个返回值,并将其分配给几个类型为text的输入。

3 个答案:

答案 0 :(得分:1)

在php中返回这样的JSON:

return json_encode([
    'firstValue ' => 'my first value',
    'secondValue' => 'my second value'
]);

然后在JS:

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

注意:我讨厌jQuery,除了一件事:ajax调用。我建议你使用它以避免所有这些使代码难以阅读的代码行:)

答案 1 :(得分: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访问该数组。

答案 2 :(得分:0)

有几种方法可以解决这个问题,我会尝试解释其中的一些。

返回HTML元素

使用您的AJAX代码中的输入返回HTML代码,并使用innerHTML代替.value将其添加到div中,就像您现在所做的那样。

返回JSON

使用json_encode将代码作为JSON对象返回,并使用JavaScript JSON函数填充输入。 Alan Tan已经在我输入时给你提供了一个例子。