Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单AJAX在twitter引导模式中发送(Symfony2)_Javascript_Jquery_Ajax_Twitter Bootstrap_Modal Dialog - Fatal编程技术网

Javascript 表单AJAX在twitter引导模式中发送(Symfony2)

Javascript 表单AJAX在twitter引导模式中发送(Symfony2),javascript,jquery,ajax,twitter-bootstrap,modal-dialog,Javascript,Jquery,Ajax,Twitter Bootstrap,Modal Dialog,在尝试了谷歌和stackoverflow的每一个结果之后,我决定寻求你的帮助 我正在构建一个Symfony2应用程序。在我的应用程序的每个视图中,我都包含一个twitter引导模式元素,以及一个发送建议/问题邮件的表单。因此,从我的基本细枝模板中,我包含了这个隐藏模式 模态显示/解释器工作正常。根据需要,Modal包含我的表单 我试图从这里实现的是:表单的AJAX提交、控制器中的邮件发送、对视图的响应。该响应是json,一个成功函数将模态的html更改为“*dislose_button*”+“E

在尝试了谷歌和stackoverflow的每一个结果之后,我决定寻求你的帮助

我正在构建一个Symfony2应用程序。在我的应用程序的每个视图中,我都包含一个twitter引导模式元素,以及一个发送建议/问题邮件的表单。因此,从我的基本细枝模板中,我包含了这个隐藏模式

模态显示/解释器工作正常。根据需要,Modal包含我的表单

我试图从这里实现的是:表单的AJAX提交、控制器中的邮件发送、对视图的响应。该响应是json,一个成功函数将模态的html更改为“*dislose_button*”+“Email sent”或“有问题”

看起来相当简单。在尝试了大多数解决方案之后,我无法阻止表单提交。所以我决定保持简单

此处,模态代码:

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Send your suggestion</h3>
</div>
<div class="modal-body">
    {% if is_granted('ROLE_USER') %}<p>We will reply to {{ app.user.mail }}</p>
    {% else%}<p>Don't forget to include a reply-to email in your suggestion.</p>
    {% endif %}
    <form action="{{ path("mgfbc_arrt") }}" method="post" id="arrt">
        <div class="control-group">
            <label for="username">Text:</label>
            <div class="controls">
                <textarea id="mail" name="mail" rows="4" style="width:500px;"></textarea>
            </div>
        </div>
        <div class="modal-footer">
            <input type="submit" id="butt" class="btn btn-success" value="Send">
        </div>
    </form>
</div>

×
发送你的建议
{%if_被授予('ROLE_USER')%}我们将回复{{app.USER.mail}

{%else%}别忘了在你的建议中包括对电子邮件的回复

{%endif%} 正文:

而JS:

<script type="text/javascript">
$("#butt").on('click', function(e) {
e.preventDefault();
});
</script>

$(“#butt”)。在('click',函数(e)上{
e、 预防默认值();
});
在尝试了所有操作之后,我已经达到了这样一个地步:javascript不会阻止表单提交

我做错了什么

提前感谢。

不要使用on()函数,而是使用委托,请尝试以下操作:

$("#arrt").delegate("#butt", "click", function(e){
  e.preventDefault();              
});

@gomman检查以下文档: 我认为您需要取消表单元素的提交事件,以使其按您想要的方式工作

@Fuser虽然delegate()对我来说更易读,但在这种情况下,使用on()或delegate()也可以做到这一点。引用jQuery文档“从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。”

尝试以下方法:

$("#arrt").delegate("#butt", "click", function(e){
  e.preventDefault();              
});
<form action="{{ path("mgfbc_arrt") }}" method="post" id="arrt">
    <div class="control-group">
        <label for="username">Text:</label>
        <div class="controls">
            <textarea id="mail" name="mail" rows="4" style="width:500px;"></textarea>
        </div>
    </div>
    <div class="modal-footer">
        <input type="submit" id="butt" class="btn btn-success" value="Send">
    </div>
</form>
<script type="text/javascript">
$("#arrt").submit(function(e) {
    e.preventDefault();
});
</script>

正文:
$(“#arrt”).提交(功能(e){
e、 预防默认值();
});

尝试在脚本内部发出警报,并查看是否在单击时触发警报。如果未触发,则需要在模态的
事件上绑定此单击事件<代码>$(“#myModal”)。在('show',函数(){
不使用
委托
,它已被弃用。
从jQuery 1.7开始,.delegate()已被.on()方法取代
上将以同样的方式工作。
$(“#arrt”).on(“单击”,“对接”,函数(e){/code>