从下拉列表中读取值并使用jquery和ajax将其发送到同一页面

时间:2015-03-23 12:08:42

标签: php jquery ajax html5

我想要从下拉列表中读取值的解决方案,并将其发送到同一页面使用GET方法。我认为ajax和jquery会实现这个目标。

如果我选择住院病人'从下拉列表中然后它会在同一页面上自动显示。

<div id="div_for_patienttype">
Choose patient type:<select id="select_patient_id"name="patient_type">
                    <option >Select patient type</option>
                    <option value="InPatient">InPatient</option>
                    <option value="OutPatient">OutPatient</option>
                </select>
</div>

我对此进行了编码并且工作正常,但有一个问题是,当我选择患者类型时,页面会刷新,下拉值是“选择患者类型&#39;。我实际上希望下拉值保持相同,即选择。” / p>

代码:

 $(document).ready(function(){
 $("#select_patient_id").change(function(){
 var selected_patient=$(this).val();
 sendType(selected_patient);
 });
 });
 function sendType(type)
 {
 $.ajax({
 type:"GET",
 url:"dispres.php",
 data:({patientType:type}),
 success:function(success)
 {
    window.location.href="dispres.php?patientType="+type;
 }
 });
 }

我怎样才能优化这个jquery和ajax代码?

3 个答案:

答案 0 :(得分:3)

读取下拉值的基本jQuery:

var patient_type = $('select[name="patient_type"]').val(); // value on submit

基本获取请求:

$.get( "my_page.php", { patient_type : patient_type } );

答案 1 :(得分:1)

不确定你真正想要的是什么。我相信你想要调用web方法(服务)的下拉选择的更改。

//代码尚未经过测试

$(document).ready(function(){
    $("select[name=patient_type]").change(function(){
        var selected_patient = $("select[name=patient_type]").val();
        $.ajax({
            type: "GET",
            url: "process-request.php?patient="+selected_patient
        }).done(function(data){
           //do something
        });
    });
});

或者你可以写

$(document).ready(function(){
        $("select[name=patient_type]").change(function(){
            var selected_patient = $("select[name=patient_type]").val();
            $.ajax({
                type: "GET",
                url: "process-request.php",
                data:{patient:selected_patient}
            }).done(function(data){
               //do something
            });
        });
    });

在PHP方面基于您使用的框架只需获取查询字符串值

答案 2 :(得分:0)

假设您尝试使用选项值作为参数发出GET请求

$('select[name="patient_type"]').on('change', function(){

    var selected = $('select[name="patient_type"]').find(':selected').val();

    $.ajax({
        url: window.location.href + '?' + selected,
        type: 'GET'
        success:function(data) {
           handleData(data);
        }
    });        
}); 

function  handleData(data){

    // do something here with the data obtained from your get request

}