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