Railsでは、application/javascript
などの異なるMIMEタイプに応答できます。あなたは評価のためにjavascriptをブラウザに送り返すためのAjaxリクエストに、このMIMEタイプを使用することがよくあります。 respond_to
のシンボルは:js
です。ajaxリクエストでjqueryを使用してJavaScript応答を取得するUJS
は、私はこのような例を参照してください。
<%= form_tag('/articles', remote: true) do %>
...
<% end %>
<%= link_to "Delete article", @article, remote: true, method: :delete %>
rails.jsファイルは、リモートリンク、フォーム、および入力を見つけて、AJAXを介してサーバに提出し、そのクリックイベントを上書きします。
Serverはこのようなものがあります。私のような状況で
respond_to do |format|
format.js
end
を、私はjQueryのでリクエストを行う必要があるので、私は、リモート使用することはできません。真の特徴を。私は、no形式のデータがサーバーに送信されませんcontentType
jqueryのajax
方法で'application/javascript'
として指定したとき
<%= form_for @tag do |f| %>
<%= f.fields_for :taggings, f.object.taggings.build do |taggings_builder| %>
<%= taggings_builder.hidden_field :tagging_flag, value: @contact.flag %>
<% end %>
<%= f.text_field :name, class: 'form-control', placeholder: 'Add a tag and press enter' %>
<% end %>
私の問題はあります。私はクロムのネットワークタブでそれを調べました。 contentType
プロパティを削除すると、フォームデータはサーバーに送信されますが、コンテンツタイプは 'application/javascript
'ではありません。それは 'application/x-www-form-urlencoded; charset=UTF-8
'です。
私のjqueryのは、次のようになります。
$view.on('keypress','form#add-tag input#tag_name', function(e){
var $form = $(this).closest('form');
var key = e.which;
if(key == 13){
$.ajax({
type: "POST",
data: $form.serialize(),
contentType: 'application/javascript',
url: $form.attr('action'),
beforeSend: function() {
$('.loading').show();
},
complete: function(){
$('.loading').hide();
},
success: function(resp){
}
});
return false;
}
})
私は「アプリケーション/ javascriptの」のコンテンツタイプでフォームデータをサーバーに送信することができますどのように?
これは、ajax呼び出しから 'application/javascript'というcontentTypeを削除したようです。 'application/x-www-form-urlencoded; 「application/javascript」の代わりに「charset = UTF-8」を使用し、MIMEタイプが 'application/javascript'ではない場合でも、コントローラの:js mimeタイプに応答します。なぜそれはまだコントローラの:js MIMEタイプに応答しますか? – Donato
'contentType'は、コントローラに送信されるパラメータのタイプであり、期待される応答のタイプではありません。 – Barmar
@Donatoなぜ 'remote true'を使うことができないのですか?私は少し不思議です)))実際には同じことをします。 – 7urkm3n