bodyhtmlをajax受信htmlに置き換えています。問題は、HEADセクションを複製したことです。
最初に、受け取ったhtmlから行全体を削除してから、次を使用する必要があります。
$('body').html(data);
POSTの結果としてhtmlを取得しています。これは適切にフォーマットされたhtmlです。
Djangoのrender_to_responseを使用して応答を送り返しています。
どうすればそのようなことを達成できますか?
bodyhtmlをajax受信htmlに置き換えています。問題は、HEADセクションを複製したことです。
最初に、受け取ったhtmlから行全体を削除してから、次を使用する必要があります。
$('body').html(data);
POSTの結果としてhtmlを取得しています。これは適切にフォーマットされたhtmlです。
Djangoのrender_to_responseを使用して応答を送り返しています。
どうすればそのようなことを達成できますか?
サーバー側を除外することをお勧めしhead
ますが、djangoでそれをどのように行うかわからない$(data).find('body')
ため、jQueryが原因でどの要素とも一致しない他のソリューションとは異なり、少なくとも機能するハックで非常に醜いソリューションを次に示します。body
タグとタグを自動的に除外して解析html
しますhead
。
見よ、正規表現の力!
$('body').html(/<body[\s\S]*?>([\s\S]*?)<\/body>/.exec(data)[1]);
head
送信は両端で無駄な帯域幅であり、正規表現は最適なソリューションではないため、これを本番環境に使用することはお勧めしません。ajaxリクエストに対してサーバーの部分ページに切り替えるまでは、少なくとも開発には機能するはずです。
これらのソリューションはすべて非常にハッキーなようです...真剣に、サーバー側のヘッドを削除するだけです!!
render_to_ responseを使用している場合は、レンダリングするためのテンプレート名を渡す必要があります。そのテンプレートには、ヘッドコードを記述しないでください。bodyタグの間にコードを挿入するだけで、準備完了です。
試してみてください$('body').html($(data).find('body'));
。これは、整形式のHTMLがある場合に機能します。
編集:これは機能しません。以下のFabricioのコメントとその理由についての私の返信を参照してください。回避策の1つは、指定されたIDを持つdiv内のすべてをラップbody
し、次のようにこのIDを選択することです。もちろん、これは、AJAX呼び出しを同じリクエストに結合する$('body').html($(data).filter('#chosenid'));
ということとまったく同じです。$('body').load('remote_page.html #chosenid');
あなたはあなたの体にテキストを挿入していますか?load-methodを使用する必要がありますが、スクリプトに注意してください:)
$("body").load("yourNextPage.html");