2012-03-30 10 views
5

私は非常に奇妙な問題に遭遇しました。私の見解では、data-remote="true"data-method="delete"というリンクがあります。リンクをクリックすると、私のレールサーバにDELETEリクエストが表示されます。返されたJSコードは、このリンクのプロパティを変更します。その中には、hrefdata-methodがあります。javascriptでデータメソッドを変更しても、ajaxがどのメソッドを呼び出すのかは変わりません。

再びこのリンクをクリックすると、私のサーバーは、私は(それはまだDELETEリクエストを送信する)POSTDELETEから、それを変更しているにもかかわらず、新しいhrefに要求を受信しますが、古いdata-methodとされます。

ただし、ページを更新すると、HTMLは「返されたJSで変更された」新しいHTMLと同じですが、実際には正しいリクエストタイプが送信されます。これが私が困惑している理由です。

+0

ここで同じ問題があります。私は一度解決策を見つけると更新されます – Makibo

答えて

9

解決策:jQuery Element.data()を使用してください。 "data-method"などのhtmlデータ属性を設定する方法。

$(this).data('method', 'post'); # sets "data-method" attribute to "post" 
$(this).data('method', 'delete'); # sets "data-method" attribute to "delete" 

# "this" refers to the clicked link element for example 
関連する問題