0

我正在 App Engine Python 上开发一个网络应用程序。

我有一个带有选择元素的表单,它将列出系统上的所有注册用户。

如果选择了第一个选项“加载用户...”,则应显示用于注册用户的模式窗口,并且在窗口关闭后,应更新组合框以显示更新后的列表,默认选择最新用户. 我只想更新组合框而不是整个页面,因为表单上可能已经有许多“非空”字段。

我怎么能在 jQuery 中做到这一点?

4

2 回答 2

1

据我了解,模式窗口是作为当前 DOM 的一部分生成的。显示注册用户列表的模式窗口将可以访问调用页面的 DOM。当单击关闭按钮或链接时,您可以让模态窗口的代码对调用页面上的选择元素进行更新。

在您的模态窗口代码中,我假设您在提交按钮上附加了一个单击事件,您可以在该函数的末尾执行表单 ajax 提交,以将表单返回到您的服务器进行处理。

例如:

$('#submit').click(function(){
 //some activity
 $("#callingPageForm").ajaxSubmit({url: 'server.php', type: 'post'})
 //close window
});

有关在 ajax 请求中提交表单的更多信息,请点击此处

于 2012-06-24T00:40:46.057 回答
1
<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
    }
于 2012-06-24T00:45:59.517 回答