我正在 App Engine Python 上开发一个网络应用程序。
我有一个带有选择元素的表单,它将列出系统上的所有注册用户。
如果选择了第一个选项“加载用户...”,则应显示用于注册用户的模式窗口,并且在窗口关闭后,应更新组合框以显示更新后的列表,默认选择最新用户. 我只想更新组合框而不是整个页面,因为表单上可能已经有许多“非空”字段。
我怎么能在 jQuery 中做到这一点?
我正在 App Engine Python 上开发一个网络应用程序。
我有一个带有选择元素的表单,它将列出系统上的所有注册用户。
如果选择了第一个选项“加载用户...”,则应显示用于注册用户的模式窗口,并且在窗口关闭后,应更新组合框以显示更新后的列表,默认选择最新用户. 我只想更新组合框而不是整个页面,因为表单上可能已经有许多“非空”字段。
我怎么能在 jQuery 中做到这一点?
据我了解,模式窗口是作为当前 DOM 的一部分生成的。显示注册用户列表的模式窗口将可以访问调用页面的 DOM。当单击关闭按钮或链接时,您可以让模态窗口的代码对调用页面上的选择元素进行更新。
在您的模态窗口代码中,我假设您在提交按钮上附加了一个单击事件,您可以在该函数的末尾执行表单 ajax 提交,以将表单返回到您的服务器进行处理。
例如:
$('#submit').click(function(){
//some activity
$("#callingPageForm").ajaxSubmit({url: 'server.php', type: 'post'})
//close window
});
有关在 ajax 请求中提交表单的更多信息,请点击此处。
<select id="users">
<option value="blah">Select a user</option>
<option value="load">Load Users...</option>
</select>
Jquery(未测试):
$('select#users').on('change',function(){
if($(this).val() == 'load'){
//show add user dialog
}
});
添加用户请求成功后:
$('#add-new-user-form').submit(function(){
//get data from form and make a dataString to post to server
var username = $('input[name="username"]').val();
//similar for other fields
var dataString = 'username='+ username + '&email=' + email + '&pass=' + pass;
$.ajax({
type: "POST",
url: "url/to/your/backend/code",
data: dataString,
success: function(responseData) {
//check how to return JSON or any other data using your backend
var newUser = responseData;
var newSelect = $('<select id="users"/>');
newSelect.append('<option value="' + newUser.value + '" >' + newUser.name + '</option>');
$('#users').replaceWith(newSelect);
$("#users option[value='" + newUser.value + "']").attr('selected', 'selected');
}
});
return false;//prevent default form submission
}