0

ページ上の大きな醜い目に見えないフォームで状態を管理していました。クリック イベントでフォームの値をシリアル化し、ページ上の div のコンテンツを提供する ajax 送信を行います。大きなフォームから値をシリアライズおよびデシリアライズし、jQuery BBQ プラグイン (完全には理解できませんでした) を使用して状態を管理していました。

アプリケーションで jQuery BBQ をやり直して history.js を使用しようとしています。ajaxify-html5要点をアプリケーションにプラグインしました。

私のアプリケーションはデータベース テーブルにドリルダウンし、そのテーブルの列をページ上のリンクとしてリストします。それらにはクラス「.attrs」が割り当てられています。

で呼び出されている「クリック」イベントが表示されajaxifyます。History.pushState を呼び出しているように見えますが、これは bbq.pushState に似ていると思います。

URL は同じままですが、Rails アプリケーションで期待どおりにリクエストが実行されていないようです。私が取り組んでいる URL の例は次のとおりです。

http://myapp/brands/get_attributes?brand_id=539page_attribute=attribute1&attribute1=Whirlpool

BBQ プラグインを使用したとき、次のように $.ajax() 呼び出しに送信したハッシュを指定しました。

hash = type: "POST", url: "brands/get_attributes", data: $("#buyersguideform").serialize()

それは Ajax リクエストを実行していたので、Rails はそれを認識し、適切な .js.erb テンプレートで応答します。

残念ながら、私の URL には、History.js にどのような種類のリクエストを行うかを伝えるのに十分な情報が含まれていないようです。そのため、コードは通常の古い GET リクエストをget_attributes実行しており、コントローラーで正しいアクションを取得していません。

この History.js でこれらの問題を解決する必要があります。

1) 私が構築したクレイジーな自家栽培の状態管理の目に見えないフォームからどのように脱却するかを考え出す。私が生成しているパラメーター化された URL でそれを始めました。あるAjaxリクエストから次のリクエストまで、それを行う方法がわかりません。言い換えれば、いつ/どのように使用するべきかわかりませんgetState()

2) History.js で非 Ajax GET の代わりに Ajax POST を実行する方法を見つけてください。

3)この要点をさらに理解する。手順には、スクリプトをプラグインするだけでよいと書かれていますが、明らかに、宣言セクションで言及されているいくつかのクラスがあり、何らかの方法でアプリケーションに組み込む必要があります。

私は状態管理に慣れていないため、少し圧倒されています。私はこれを8時間続けており、ある程度の進歩を遂げていますが、非常に遅いです. どんな助けでも非常に深く感謝しています。

更新 1:

呼び出しに提供されたハッシュでキーをGET指定していないため、gist は s のみを実行することがわかります。そこにハードコーディングすると、もちろん. さらに見直してみると、要点を使用する必要があるようには見えません。type$.ajax()POST

また、どういうわけかHistory.pushState()私のためにAjaxリクエストを行うのは間違っていたようです。エントリを状態にプッシュするだけのようです。これは完全に適切です。私が混乱した理由は、このアプリには以前に、状態管理とその後の Ajax リクエストの両方を処理する pushState ラッパーが採用されていたためです。したがって、Gist を使用しないと Ajax の投稿が行われないのは、そもそもそれが想定されていないからです。

4

1 に答える 1

0

History.js プラグインで利用できるのは有料サポートのみのようです。良い仕事をしているように見えますが、実際に使用することについての本当の答えを見つけることができませんでした. 著者が自分自身について言っているように、あなたが Javascript の専門家であれば、おそらくそれでうまくいくでしょう。状態管理に比較的慣れておらず、ドキュメントを探している場合は、おそらく苦労するでしょう。

簡単な要件のために BBQ プラグインに戻りましたが、適切に機能しています。History.js プラグインよりも詳細に文書化されています。History.js の方が機能的に優れていると確信しています。ドキュメントが追いつき、質問への回答が得られたら、切り替えます。

于 2012-11-15T14:25:22.950 に答える