【问题标题】:jQuery setting input field valuejQuery设置输入字段值
【发布时间】:2013-08-25 08:47:06
【问题描述】:

我有一个编辑用户的表单,我想将数据库中的用户数据插入表单的字段。我要做的是

链接

<a href="javascript:void(0)" onclick="editUser('/edit/${user.login}')">Edit</a>

脚本

function editUser(url) {
$( "#edit-form" ).dialog( "open" );
$.ajax({
        url: url,
        type: "POST",
        success: function (resp) {            
        $('input[name="elogin"]').val(resp.login);
        }
    })
}

表格

<div id="edit-form" title="Edit user">
<p class="validateTips">All form fields are required.</p>
<form:form>
    <fieldset>
        <label for="elogin">Login</label>
        <input type="text" name="elogin" id="elogin" class="text ui-widget-content ui-corner-all" />
    </fieldset>
</form:form>
</div>

我的 Spring 控制器返回以下内容(在包装器中我有字段 login

@RequestMapping(value="/edit/{userLogin}", method=RequestMethod.POST)
@ResponseBody
public Wrapper edit(@PathVariable String userLogin) {
    return wrapper.wrap(userService.findByLogin(userLogin));
}

但是表格是空的。我也尝试设置手动值,但仍然没有用。请帮我设置输入字段值。

【问题讨论】:

  • 您检查控制台是否有错误? resp 中返回的值是什么?
  • 您需要查看返回的内容,它可能不会被视为 json。将 dataType: 'json' 添加到您的 ajax 方法中。
  • 控制台中没有错误。 resp 的值应该是实体,具有字段 String login
  • 我尝试调试它,但 Firebug 在此断点处没有显示任何内容$('input[name="elogin"]').val(resp.login); 我可能会错过我应该接收的数据类型。

标签: java jquery ajax json spring


【解决方案1】:

您应该将表单数据与您的发布请求一起发送。

$.ajax({
    url: url,
    type: "POST",
    data:$('form').serialize(),
    success: function (resp) {            
    $('input[name="elogin"]').val(resp.login);
    }
})

【讨论】:

    【解决方案2】:
    function editUser(url) {
    $( "#edit-form" ).dialog( "open" );
    $.ajax({
            url: url,
            type: "POST",
            success: function (resp) {            
            $('#elogin').val(resp.login);
            }
        })
    }
    

    应该可以正常工作,因为您已经为输入设置了 ID。

    【讨论】:

      【解决方案3】:

      不太确定您的顺序是否正确,您肯定会先进行 ajax 调用然后打开 jQuery 对话框吗?

      无论哪种方式,您都可以按如下方式向对话框中提供数据;

      //call ajax method to get value you want to show.
      var somevariable = etc.....
      var dto = {
          loginName: somevariable
      }
      $( "#edit-form" ).data('params', dto).dialog( 'open' );
      

      然后在你的对话框中使用 open() 方法。

      $("#edit-form").dialog({
          bgiframe: true,
          autoOpen: false,
          height: 280,
          width: 320,
          draggable: false,
          resizable: false,
          modal: true,
          open: function () {
              //so values set in dialog remain available in postback form
              $(this).parent().appendTo("form");
      
              //get any data params that may have been supplied.
              if ($(this).data('params') !== undefined) {
                  //stuff your data into the field
                  $("#elogin").val($(this).data('params').loginName);
              }
          }
      });
      

      【讨论】:

      • open: 有问题,因为没有出现表单。当我评论“打开”对话框时出现,但有空白字段。
      • 使用浏览器工具在javascript中设置一些断点并单步执行。
      • 或者只是尝试在 open 方法的字段中填充一些文本。 $("#elogin").val('Hello World');
      • .dialog('open') 中可能没有双引号;
      • 我尝试使用 FireBug,在 success: function (resp) 之后它什么也没显示,就像什么也没做一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2011-01-06
      相关资源
      最近更新 更多