5

非常に奇妙な問題: 2 つの部分からなるドロップダウンがあり、州を選択すると 2 つ目のドロップダウンが追加され、その州の MSA エリアのリストが表示されます。

これは、次のように、選択ドロップダウンでエリアのリストを返すコントローラーへの JQuery Get 要求を使用して行われます。

jQuery(function($) {
  // when the #area_state field changes
  $("#area_state").change(
    function() {
      // make a call and replace the content
      var state = $('select#area_state :selected').val();
      if(state == "") state="0";
      jQuery.get(
        '/getmsas/' + state,
        function(data){ $("#msas").html(data); }
      )
    return false;
    }
  );
})

注 - このコードは、次のチュートリアルから改作されました: http://www.petermac.com/rails-3-jquery-and-multi-select-dependencies/

これは Chrome と IE では正常に機能しますが、Firefox (13.0.1) では機能せず、次の 2 つのエラーが発生します。

Error: junk after document element
Source File: http://localhost:3000/getmsas/Connecticut
Line: 2, Column: 1
Source Code:
<select id="area_msa" name="area[msa]"><option value="">Select Area (Optional)</option>

Error: uncaught exception: [Exception... "Node cannot be inserted at the specified point
in the hierarchy"  code: "3" nsresult: "0x80530003 (HierarchyRequestError)"  location:   
"http://localhost:3000/assets/jquery.js?body=1 Line: 6498"]
4

5 に答える 5

12

だから私はこれに対する解決策を強引に実行しました。なぜこの問題が Firefox に固有のものなのかはまだよくわかりませんが、調査するかもしれません。

dataType (get メソッドの最後のパラメーター) の引数を追加して明示的に html として宣言することで、これを修正することができました。

Get は、次の JQuery ドキュメントで説明されています: http://api.jquery.com/jQuery.get/

jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

したがって、機能するコードは、dataType 引数として「html」を追加することです。

jQuery(function($) {
  // when the #area_state field changes
  $("#area_state").change(
    function() {
      // make a call and replace the content
      var state = $('select#area_state :selected').val();
      if(state == "") state="0";
      jQuery.get(
        '/getmsas/' + state,
        function(data){ $("#msas").html(data); },
        "html"
        // ABOVE LINE IS THE FIX
      )
    return false;
    }
  );
})

繰り返しますが、なぜこれが Firefox 固有なのかを調査する必要があります。これは私を夢中にさせていたので、誰かを助けることを願っています.

于 2012-07-11T22:20:39.087 に答える
0

これが単なる不完全なコピペかどうかはわかりませんが、

<select id="area_msa" name="area[msa]"><option value="">Select Area (Optional)</option>

select タグを閉じる必要があります。そうしないと、html の残りの部分が select 要素内にネストされます...これは悪いことです。

于 2012-07-11T20:42:17.643 に答える
0

まったく同じ問題があり、応答が空の場合にのみ発生していました。たとえば、レコードを含むテーブルを期待していましたが、表示するものは何もありませんでした。

于 2014-09-02T10:57:55.950 に答える
0

私はこの追加を解決しました

header('Content-Type: text/html; charset=utf-8');

php でフェッチファイルに。ヘッダーが適切に設定されていない場合、バグが発生します(これは、あるサーバーから別のサーバーに移動したときに発生し、古いサーバーでは正常に機能しましたが、ヘッダーを設定するまでは新しいサーバーでは機能しませんでした)

于 2014-03-25T14:50:27.420 に答える
0

私はFFだけで同じ問題を抱えていました。私のサーブレットは、コンテンツ タイプ「テキスト」のテキストを返していました。FF はこれを text/xml として解釈し、本文に xml を挿入しようとするため、エラーが発生します

コンテンツ タイプを text/plain に変更しました - すべて問題ありません

于 2012-10-02T19:15:42.623 に答える