使用 AJAX 和 PHP 获得多重响应

Get multipe response using AJAX and PHP

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

由 select 框触发的事件,当它更改值 (onchange) 时,它调用 JavaScript 函数并获得 xmlhttp.responseText.

但是在responseText我们只能根据id改变一个value/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 中获取多个 return 值并将其分配给多个文本类型的输入。

不是直接从数据库回显结果,而是需要将它们存储在数组中并回显 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 的数组。

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

Return HTML 元素

Return HTML 代码,使用 AJAX 代码输入,并使用 innerHTML 而不是 [=11] 将它们添加到 div =]就像你现在做的那样。

Return JSON

Return 代码作为带有 json_encode 的 JSON 对象,并使用 JavaScript JSON 函数来填充您的输入。在我输入此内容时,Alan Tan 已经为您提供了示例。

Return JSON 像这样 php:

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 电话。我建议您使用它以避免所有这些使代码难以阅读的代码行:)