填充基于selectbox ajax php mysql的文本框

时间:2015-05-18 12:50:39

标签: php jquery mysql ajax php-5.3

我有一个问题。所以我尝试根据selectbox填充文本框的值。我的HTML:

<form id="form_gift" action="myAction" method="post">
    <div class="form-group">
        <label for="">Gift</label>
        <select id="statusSelect" name="{{ form_gift.gift.name }}" class="form-control" onChange="getPrix()">
            {% for key,category in form_gift.gift.choices %}
                <option value="{{ key }}">
                    {{ category }}
                </option>
            {% endfor %}
        </select>
    </div>
    <div class="form-group">
        <label class="control-label" for="">Price</label>
        <input type="text" id="{{ form_gift.prix.name }}" name="{{ form_gift.prix.name }}" value="" placeholder="" class="form-control" required="required"/>
    </div>
</form>
<script>
    function getPrix() {
        var selectedId =   $("#statusSelect option:selected").val(),
            url_deploy = "http://"+window.location.hostname+"/getPrice";
        $.ajax({
            url: url_deploy,
            type: "POST",
            async: true,
            data: { id:selectedId},
            dataType: 'json',
            success: function (result) {
                $('#prix').val(result.Value);
            }
        });
    }
</script>

我的PHP:

public function getPrix()
{
    if (isset($_POST['id']))
    {
        $iIdGift = $_POST['id'];
    }

    $o_Article = Article::find($iIdGift);
    $prix = $o_Article->articlePrice();
    error_log(print_r($prix,true), 3, "/var/tmp/error.log");
    return json_encode($prix);
}

我测试了PHP代码,它工作正常。问题是当我尝试填充选择框时,我想在成功方法中。请帮帮我!提前谢谢!

2 个答案:

答案 0 :(得分:1)

给定返回JSON的格式:

  

json的格式如下:{“id”:“59.90”}

您需要使用id键访问该值,请尝试以下操作:

success: function (result) {
    $('#prix').val(result.id);
}

答案 1 :(得分:1)

<input type="text" id="{{ form_gift.prix.name }}" name="{{ form_gift.prix.name }}" value="" placeholder="" class="form-control txtPrix" required="required"/>


   success: function (result) {
        $('.txtPrix').val(result.id);
    }