-2

bodyhtmlをajax受信htmlに置き換えています。問題は、HEADセクションを複製したことです。

最初に、受け取ったhtmlから行全体を削除してから、次を使用する必要があります。

$('body').html(data);

POSTの結果としてhtmlを取得しています。これは適切にフォーマットされたhtmlです。

Djangoのrender_to_responseを使用して応答を送り返しています。

どうすればそのようなことを達成できますか?

4

4 に答える 4

0

サーバー側を除外することをお勧めしheadますが、djangoでそれをどのように行うかわからない$(data).find('body')ため、jQueryが原因でどの要素とも一致しない他のソリューションとは異なり、少なくとも機能するハックで非常に醜いソリューションを次に示します。bodyタグとタグを自動的に除外して解析htmlしますhead

見よ、正規表現の力!

$('body').html(/<body[\s\S]*?>([\s\S]*?)<\/body>/.exec(data)[1]);

フィドル

head送信は両端で無駄な帯域幅であり、正規表現は最適なソリューションではないため、これを本番環境に使用することはお勧めしません。ajaxリクエストに対してサーバーの部分ページに切り替えるまでは、少なくとも開発には機能するはずです。

于 2013-01-12T22:42:34.387 に答える
0

これらのソリューションはすべて非常にハッキーなようです...真剣に、サーバー側のヘッドを削除するだけです!!

render_to_ responseを使用している場合は、レンダリングするためのテンプレート名を渡す必要があります。そのテンプレートには、ヘッドコードを記述しないでください。bodyタグの間にコードを挿入するだけで、準備完了です。

于 2013-01-13T22:35:48.353 に答える
-1

試してみてください$('body').html($(data).find('body'));。これは、整形式のHTMLがある場合に機能します。

編集:これは機能しません。以下のFabricioのコメントとその理由についての私の返信を参照してください。回避策の1つは、指定されたIDを持つdiv内のすべてをラップbodyし、次のようにこのIDを選択することです。もちろん、これは、AJAX呼び出しを同じリクエストに結合する$('body').html($(data).filter('#chosenid'));ということとまったく同じです。$('body').load('remote_page.html #chosenid');

于 2013-01-12T22:19:51.783 に答える
-1

あなたはあなたの体にテキストを挿入していますか?load-methodを使用する必要がありますが、スクリプトに注意してください:)

$("body").load("yourNextPage.html");
于 2013-01-12T22:20:18.473 に答える