ajax - Bootstrap Popover与Grails和Ajax

标签 ajax grails twitter-bootstrap popover

只是尝试在BS popover中使用ajax formRemote。
一个简单的形式可以,但是ajax实现不行:

1)gsp代码

    <div id="addfolder">
            <a href="#" class="btn" id="nrfolder" rel="popover">
            <i class="icon-folder-close icon-large"></i></a><%--<g:message code="folder"  args="[entityName]" default="New Folder"/>--%></a>
        </div>
        <div id="newRootFolder" style="display:none;">
        <form class="form-inline" style="width:280px;">
        <g:formRemote name="createRootFolder" url="[controller:'folders',action:'create']" onLoading="showModalSpinnerNewFolder();" onComplete="hideModalSpinnerNewFolder();" onSuccess="doResponseNewFolder(data);" >
              <g:textField  name="folderName" class="input-small" type="text" placeholder="New folder"/>
              <input type="submit" value="Create" class="btn btn-info" />
              <a href="#" class="btn"  onclick="$('#nrfolder').popover('hide')"/>Cancel</a>
        </g:formRemote>
</g:formRemote>
    </form>
    </div>

2)用jQuery弹出调用
$('#nrfolder').popover({placement:'right',title:'New Root Folder',html:true,content: function() { return $('#newRootFolder').html();} });

3)jQuery成功事件:doResponseNewFolder函数
function doResponseNewFolder(data) {
        alert('toto' + data.success);
        if (data.success == 'true') {
            var msg = data.msg;
            // reload tree view
            $('#tree').dynatree('getTree').reload();
        } else {
            var msg = $('<ul class="errors">');
            for (var i = 0; i < data.errorList.length; i++) {
                msg.append('<li>' + data.errorList[i] + "</li>");
            }
        }
        $('#new_folder_msg').html(msg);
        $('#new_folder_msg').show();
    }

任何的想法?

最佳答案

看来您搞砸了表单,让我解释一下:Grails的g:formRemote是制作Ajax Web表单的辅助工具,因此,如果查看生成的HTML,则在调用时将生成一个表单。

事实是您已经打开了一个无效的HTML语法表单。第一种形式不应该存在。您可以将其属性提供给g:formRemote,Grails会将它们传递给生成的form:

<g:formRemote class="form-inline" style="width:280px;" name="createRootFolder" url="[controller:'folders',action:'create']" onLoading="showModalSpinnerNewFolder();" onComplete="hideModalSpinnerNewFolder();" onSuccess="doResponseNewFolder(data);" >
      <g:textField  name="folderName" class="input-small" type="text" placeholder="New folder"/>
      <input type="submit" value="Create" class="btn btn-info" />
      <a href="#" class="btn"  onclick="$('#nrfolder').popover('hide')"/>Cancel</a>
</g:formRemote>

只要不加其他形式,就足够了。

关于ajax - Bootstrap Popover与Grails和Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15821641/

相关文章:

html - 使用推拉时 Bootstrap 崩溃

html - 如何在导航栏标题中对齐搜索表单?

jquery - AJAX返回JSON对象的奇怪行为

ajax - Node JS中使用Ajax上传时显示加载过程png

grails - Grails3 application.groovy动态属性

spring - Grails Spring Security 插件和 dbconsole

css - 具有多个组件和 CSS 的 AngularJS

php - Ajax 函数未运行

javascript - JQuery ajax中基本授权的使用

mysql - 如何使用/JOIN 改进 SQL 查询?