Ajax在bootstrap popover中

时间:2013-02-12 00:45:33

标签: jquery symfony twitter-bootstrap jquery-post

我遇到了这个问题,我真的不知道为什么它不起作用。

如果我在bootstrap的popover中使用这个代码,它可以工作,但是一旦我在popover中使用它,它就不再起作用了。我的意思是如果表单是从popover提交的,它就像一个普通的表单,收取新的页面而不是像AJAX脚本那样。

           $("#share-popover").submit(function(){
              //get the url for the form
              var url=$("#form_search").attr("action");
              alert($("#search-value").val());

              //start send the post request
               $.post(url,{
                   formName:$("#search-value").val(),
                   other:"attributes"
               },function(data){
                    if(data.responseCode==200 ){           
                        $('#output').html(data.greeting);
                        $('#output').css("color","red");
                    }
                   else if(data.responseCode==400){ //bad request
                       $('#output').html(data.greeting);
                       $('#output').css("color","red");
                   }
                   else{
                      alert("An unexpeded error occured.");
                   }
               });
              return false;
           });

按钮:

   <button id="share-dropdown" style="margin-right:5px" class="btn btn-warning pull-right" type="button" rel="popover" data-placement="bottom" data-html="true"><i class="icon icon-plus icon-white"></i> Share</button>

Js:

        $('#share-dropdown').popover({ 
            html : true,
            content: function() {
              return $("#share-popover").html();
            }
        });

内容的HTML:

<div id="share-popover" style="display: none">
  <form id="form_search" action="{{ path('weezbook_site_ajax_search') }}" method="POST">
    <input id="search-value" type="text" value="Book title, authors, isbn" class="share-input" name="search-value" />
    <input type="submit"  />
  </form>

我在Symfony2上使用它,我的控制器返回JSON。

我真的不明白为什么它在盒子外工作而不在里面......

2 个答案:

答案 0 :(得分:0)

当您使用json时,您必须在post这样指定

$.post(url,{ data: something   },function(data){some process},

 'json');// define the type as json

答案 1 :(得分:0)

修改

我没有尝试,但是.submit()替换$(document).on('submit', '#share-popover', function() {});应该有效,因为在渲染dom之后加载了内容,我当时无法使用.submit()。 / p>


我真的不知道为什么,但用另一个替换.submit()方法可以解决问题。

以下是我所做的改变:

<input id="search-value" type="text" placeholder="Book title, authors, isbn" class="share-input" name="search-value" onkeypress="return runScript(event)" />


function runScript(e) {
  if (e.keyCode == 13) {
    ...
    return false;
  }
}