根据下拉列表中的选定项更新表单字段(jquery,PHP和; MySQL)

时间:2014-03-27 20:36:07

标签: php jquery mysql ajax

我有一个数据库表,其格式为:

name:price

我从数据库中获取了预订附加信息的PHP数组,并创建一个包含其名称的选择框,并显示价格字段:

<label class="label">Name</label>
<label class="select">
  <select id="name" name="name">
  <?php 
foreach ($upsells as &$upsell) {
  echo '<option value="'.$upsell['name'].'">'.$upsell['name'].'</option>';
}
  ?>
  </select>
</label>
<label id="pricet" class="label" style="display:none;">Price</label>
<label class="input" id="price" style="">
  <input class="" id="price" type="text" pattern="\d+(\.\d{2})?" name="price" value="" >
</label>

我正在尝试从选择框中选择与项目名称相关联的正确价格,让价格框自动更新。

使用jquery,我有:

$(document).ready(function() {
  $("#name").change(function () {
    var choice = jQuery(this).val();
    $.ajax({
      url:'/get_upsell.php?pid=<?php echo $urlcrypt->encrypt($pid);?>',
      type:'GET',
      data : {'id' : choice},
      success : function(response) {
      $('input[name="name"]').val(response.name);
      $('input[name="price"]').val(response.price);
      }
    });
  });
})

和get_upsell.php

if (isset($_GET['pid'])){
  $pid = $urlcrypt->decrypt($_GET['pid']);
}

$jsonupsells = $users->get_upsells_ajax($pid);

$indexedOnly = $jsonupsells;

foreach ($associative as $row) {
  $indexedOnly[] = array_values($row);
}

return json_encode($indexedOnly);

当我调用get_upsells.php(我手动检查)时会创建json字符串,但是在选择项目时我无法看到来自浏览器的任何ajax请求。

我哪里出错?

编辑:在'GET'之后找到了遗失。我现在看到了ajax请求,但无法解决如何更新“价格”表单字段。

编辑:JS函数现在看起来像这样:

$(document).ready(function() {
  $("#name").change(function () {
    var choice = jQuery(this).val();
    $.ajax({
      url:'/get_upsell.php?pid=<?php echo $urlcrypt->encrypt($pid);?>',
      type:'GET',
      data : {'id' : choice},
      success : function(response) {
        response = jQuery.parseJSON(response);
        $('input[name=price]').val(response.price);
      }
    });
  });
})

并更改了数据库查询,因此它仅根据项目ID返回所选项目的值。也改为“返回”为“回声”。

仍未更新价格区域。

更新:

将功能更改为:

$('#price').val('Hello');

用'Hello'填充价格字段,所以它看起来像......

response.price

...位没有传递数据。

2 个答案:

答案 0 :(得分:0)

type:'GET'

后出现语法错误

编辑:您需要解析为JSON对象。

success : function(response) {
response = jQuery.parseJSON(response);

在此设置值之后,您需要删除引号。

$('input[name=acct]').val(response.price);

编辑2:对于ajax你必须echo JSON,而不是return(在php文件中)

答案 1 :(得分:0)

现已修复:

$('#price').val(response[0].price);