【问题标题】:how to edit with ajax using struts2如何使用 struts2 使用 ajax 进行编辑
【发布时间】:2014-04-24 01:08:13
【问题描述】:

我想按照这个逻辑编辑我的数据库中的一些元素: 我从下拉列表中选择了一个项目(自动完成),其他字段根据已经选择的字段直接从数据库中填充,以便我可以编辑数据。

如何在JSP页面中使用Ajax来做这种处理?

$(document).ready(function() {
  $('#datepicker').datepicker();

  $('#field1').change(function()
          {

//code ajax wich select the row from database and return the values on the same form


      }
  );


});

JSP 代码:

<s:form  cssStyle="border:0;" validate="true" action="add" namespace="/" >
<sx:autocompleter id="field1"  label="field1" list="liste1" name="liste"></sx:autocompleter>
<s:textfield name="field2" label="field2" size="15" ></s:textfield>
<s:select style="height:30px; width:125px" name="field3" label="field3"  headerValue="Select" list="liste2"></s:select>
<s:submit style="height:30px; width:125px" name="Valider" value="Valider"></s:submit>
</s:form>

有什么帮助吗?

编辑:

我想从自动完成字段中传递一个选定的值

$(document).ready(function() 
    {
      $('#field1').change(function()
        {

          var selectedValue = $('#field1 option:selected').val();
            if ($.trim(selectedValue).length > 0) 
             {

                $.ajax(
                {
                    type: 'POST', 
                    url: 'action/action1',
                    data: { field1 : selectedValue},
                    dataType: 'json',
                    async: false ,
                    contentType: 'application/json; charset=utf-8',
                    success: function(){window.alert(selectedValue);}

                 });

            }

        }
      );


    });

编辑 2:

行动:

public String query()
{
    if( !field1.equals("") || field1 != null)
    {
        Service = new ServiceImpl();
        v = new Vehicule();
        v= Service.getVehiculeByImmat(field1);
        map.put(field2.toString(), v.getfield2().toString());
        map.put(date.toString(), v.getdate().toString());

    }
                return "success";

}

struts.xml:

<action name="query" class="action.GestionVehicules" method="query">
          <result name="success" type="json">map</result>
    </action>

ajax:

$(document).ready(function() 
    {
      $('#field1').change(function()
        {

          var selectedValue = $('#field1').val();
            if ($.trim(selectedValue).length > 0) 
             {

                $.ajax(
                {
                    type: 'POST', 
                    url: '<s:url action="query"/>',
                    data: { field1: selectedValue},
                    dataType: 'json',
                    success: function(){alert(data);}

                 });

            }


        }
      );


    });    

这是真的吗?

编辑 3:

javascript:

$(document).ready(function() 
    {
      $('#field1').change(function()
        {


          var selectedValue = $('#field1').val();
            if ($.trim(selectedValue).length > 0) 
             {
          alert(selectedValue);
                $.ajax(
                {
                    type: 'POST', 
                    url  : "<s:url action='query'/>",
                    dataType : 'json',
                    data: { field1: selectedValue},
                    success: function(result){
                    // alert(result);
                     if (result.length > 0) {
                            //code to put hashmap values into textfield

                                //put map.get("key1") into textfield1 ....

                            });
                        }

                },

                 });

            }

        }
      );


    });

编辑 4:

javascript:

  $.each(result, function(key,value)
        {                               $("#"+key).val(value); // how can it works with dropdown list ??
    } );

【问题讨论】:

  • 当您向服务器调用 ajax 请求时,它应该使用可用于修改页面 DOM 的数据进行响应。
  • 如何将参数从 ajax 传递到 action,然后从 action 传递到 ajax?
  • 你要传递什么参数?
  • 我想传递一个选定的值,我编辑了帖子,请帮忙!!
  • 您是如何在struts.xml 中或按照惯例映射操作的?

标签: java jquery ajax jsp struts2


【解决方案1】:

使用简单的 ajax 请求传递选定的值(如果它被选中)

$.ajax(
{
    type: 'POST', 
    url: '<s:url action="action1"/>',
    data: { field1 : selectedValue},
    //async: false ,
    success: function(data){
      alert(data);
    }
 });

在动作类中创建一个名为field1 的字段,其中包含getter 和setter。然后您可以选择返回结果类型。如果使用 json 结果,则该字段将被序列化并添加到您在成功处理程序的数据中获得的 json 对象中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多