【问题标题】:Get multipe response using AJAX and PHP使用 AJAX 和 PHP 获得多重响应
【发布时间】:2016-07-19 17:17:12
【问题描述】:

是否可以使用 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 中获取多个返回值并将其分配给多个文本类型的输入。

【问题讨论】:

标签: php html ajax xampp


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

【讨论】:

    【解决方案2】:

    您需要将结果存储在一个数组中并回显 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 访问该数组。

    【讨论】:

      【解决方案3】:

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

      返回 HTML 元素

      使用来自 AJAX 代码的输入返回 HTML 代码,并使用 innerHTML 而不是像您现在所做的那样使用 .value 将它们添加到 div。

      返回 JSON

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多