2013-08-20 15 views
0

基本上我有一个部分有6像这样的选择框我使用ajax动态填充它们,但选择字段的数量根据servlet填充更改响应像一些时间2选择框显示或某时5,4,3等...我隐藏其他未被轮询的选择框。现在,我想在按钮的单击事件时选择到那里值隐入提交相应的输入和我想通过只显示选择框的值的servelt不是所有如何检查表单隐藏字段是否为空,然后只发送尊重的请求参数到servlet

<div id="section-2" class="section-content"> 
    <fieldset id="field-1"> 
     <label for="field-1">Data 1</label> 
     <select id="factor-1"></select> 
    </fieldset> 
    <fieldset id="field-2"> 
     <label for="field-2">Data 2</label> 
     <select id="factor-2"></select> 
    </fieldset> 
    <fieldset id="field-3"> 
     <label for="field-3">Data 2</label> 
     <select id="factor-3"></select> 
    </fieldset> 
    <fieldset id="field-4"> 
     <label for="field-4">Data 4</label> 
     <select id="factor-4"></select> 
    </fieldset> 
    <fieldset id="field-5"> 
     <label for="field-5">Data 5</label> 
     <select id="factor-5"></select> 
    </fieldset> 
    <fieldset id="field-6"> 
     <label for="field-6">Data 6</label> 
     <select id="factor-6"></select> 
    </fieldset> 

    <button type="button" id="section2-next"> Next </button> 

    <input type="text" id="data-1-Id"/> 
    <input type="text" id="data-2-Id"/> 
    <input type="text" id="data-3-Id"/> 
    <input type="text" id="data-4-Id"/> 
    <input type="text" id="data-5-Id"/> 
    <input type="text" id="data-6-Id"/> 

</div> 

这里是我的电话$.ajax() ..

$("#section2-next").click(function(){ 

    var param1= $("#data-1-Id").val(); 
    var param2= $("#data-2-Id").val(); 
    var param3= $("#data-3-Id").val(); 
    var param4= $("#data-4-Id").val(); 
    var param5= $("#data-5-Id").val(); 
    var param6= $("#data-6-Id").val(); 
    // here i am having problem how to pass only filled input filed value not all 6 parammeters on every ajax request......... 
    var dataString = 'param1='+param1+"&param2="+param2+"&param3="+param3+"&param4="+param4+"&param5="+param5+"&param6="+param6; 
    console.log(dataString); 
    $.ajax({ 
     type:"Post", 
     url:"GetPrice", 
     datatype:"json", 
     data : dataString, 
     success: function(data){ 
      // var price = data.asset; 
      var parsed = JSON.parse(data); 
      var price = parsed[0].FormattedPrice; 
      $('#price').empty().text(price); 
     } 
    }); 

}); 

以及如何检查该参数是否存在于servlet中?

+0

'$( '选择')。过滤器(” :可见“)序列化()'。 ,这样你可以只传递可见的select到ajax函数。 – nubinub

回答

1

包装您输入的形式是这样的:

<form name="section2-next" id="section2-next"> <input type="text" id="data-1-Id"/> <input type="text" id="data-2-Id"/> <input type="text" id="data-3-Id"/>><input type="text" id="data-4-Id"/> <input type="submit"value="submit!"/> <!-- dont forget the input of type submit--> </form>

然后使用$( “#第2节,下一个”)提交(。功能(事件){

event.preventDefault(); //不要忘记此行..

//而不是$( “#第2节,下一个”)点击(函数(){

下一个

//你dataString

var dataString = {param1 : $("#data-1-Id").val() || '', param2 : $("#data-2-Id").val() || ''};// up until param6

// for var parsed = JSON.parse(data);

var parsed = $.parseJSON(data);

最后,

//在你的PHP文件 <?php echo json_encode($_POST); ?>

+0

谢谢你的答案,但我不想通过所有参数为每个Ajax请求... –

1
 var dataString =""; 
    if ($("#data-1-Id").val() != '') 
    { dataString = 'param1='+param1; } 

    ... 
dataString =dataString+ #2 
    .do the same for all 
    ... 
+0

感谢ans,但如何将dataString转换为json格式 –

相关问题