如何从jQuery函数中获取数据?

时间:2018-03-18 14:00:57

标签: php jquery html ajax jquery-select2

我有以下脚本在select2

中搜索产品
<script type="text/javascript">
$( document ).ready(function() {
  $("#productSelect").select2({
    placeholder: 'Seleccione un Producto',
    minimumInputLength: 3,
    ajax: {
      url: 'PrdSearch.php',
      dataType: 'json',
      delay: 50,
      processResults: function (data) {
        return {
          results: data
        };
      },
      cache: true
    }
  });

});

和执行搜索的PrdSearch.php文件

<?php
require_once("db.php");
if (empty($_GET['q'])) exit ;
$q = strtolower($_GET["q"]);
if (get_magic_quotes_gpc()) $q = stripslashes($q);
$sql = "SELECT * FROM " .$database_table_prefix."products" . " WHERE prd_name like '%$q%' or prd_code like '%$q%' ORDER BY prd_name LIMIT 20";
$stmt = $conn->prepare($sql);
$stmt->execute();
$rows = $stmt->rowCount();
$result = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $result [] = ['id'=>$row['prd_id'], 'text'=>$row['prd_name']];
}
echo json_encode($result);?>

效果很好,并且单个产品的prd_idprd_name分别带有idtext的值,name被置于正确value中的<select>

我尝试通过在数组code中添加pricekeys来提供更多产品数据,例如values$result,我没有任何错误,但我不知道如何从阵列中恢复其他数据,我知道"text"的值仍然在<select>但其他字段我如何恢复它们? / p>

另一件事是,如果我已经有了如何将值分配给表单输入的字段?

感谢您的回答。

3 个答案:

答案 0 :(得分:0)

在您的AJAX功能中,您可以解码json并访问您想要的任何数据。试试这个。

ajax: {
      url: 'PrdSearch.php',
      dataType: 'json',
      delay: 50,
      processResults: function (data) {
        var d = $.parseJSON(data);
        alert(d.price);
        return {
          results: data
        };
      },
      cache: true
    }

这样您就可以从编码的json文件中访问任何数据。希望能帮助到你。 要将值分配给表单,您只需使用以下代码。

$("#input_id").val(d.price); //it will assign the product price to the input with id "input_id"

答案 1 :(得分:0)

尝试使用以下内容交换AJAX调用:

$.ajax({
  url: 'PrdSearch.php',
  dataType: 'POST',
  success: function (data) {
    processResults(data); // assume this fuction is declared elsewhere now
  } else {
    // ajax failed msg
  }
});

答案 2 :(得分:0)

select2数据存储在e.params.data中,因此脚本如下:

$( document ).ready(function() {

      $('#productSelect').on("select2:select", function (e) {
        $("#inv_code").val(e.params.data.code);
        $("#inv_price").val(e.params.data.price);
       });


      $("#productSelect").select2({
        placeholder: 'Seleccione un Producto',
        minimumInputLength: 3,
        ajax: {
          url: 'PrdSearch.php',
          dataType: 'json',
          delay: 50,
          processResults: function (data) {
            return {
              results: data
            };
          },
          cache: true
        }
      });

    });

感谢您的贡献