3

私はこの問題で立ち往生しています、そして私はそれがなぜ機能しないのか本当にわかりません。

ブートストラップのポップオーバーの外でこのコードを使用している場合は機能しますが、ポップオーバーの内部で使用するとすぐに機能しなくなります。つまり、フォームがポップオーバーから送信された場合、通常のフォームのように機能し、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を返します。

箱の内側ではなく、箱の外側で機能している理由がわかりません...

4

2 に答える 2

0

一緒に作業しているので、このようjsonに指定する必要がありますpost

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

 'json');// define the type as json
于 2013-02-12T04:59:07.090 に答える
0

編集:

試しませんでしたが、domのレンダリング後にコンテンツが読み込まれたため、その時点.submit()$(document).on('submit', '#share-popover', function() {});は.submit()を使用できませんでした。


理由はよくわかりませんが、.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;
  }
}
于 2013-02-15T09:48:21.460 に答える