, başka herhangi bir JS önce bu eklentiyi çalıştırır: o yanlışlıkla diğer JavaScript ile üzerine yazılır az olası olacak şekilde
<script>
function authToken() {
return '<%= form_authenticity_token if protect_against_forgery? -%>';
}
</script>
authToken
bir fonksiyonu olarak kodlanmıştır.
Alternatif olarak, Rails 3 itibariyle doğrulama anahtarı sizinle okuyabilir bir <meta>
etiketi olarak gömülür: ana JS
<script>
function authToken() {
return $('meta[name="csrf-token"]').attr('content');
}
</script>
, daha sonra authToken()
çağırabilir ve bu dönersiniz Ajax çağrılarınıza dahil etmek için bir kimlik olarak orijinallik belirteciniz. Örneğin, jQuery kullanarak: Eğer form_for
yardımcı yerleşik Raylar kullanırsanız, otomatik olarak gizli bir girişteki özgünlük belirteci eklediği
$.ajax({
type: 'PUT',
url: url,
data: {
foo: bar,
authenticity_token: authToken()
},
complete: function(data) {}
});
Not. Eğer gizli kimlik doğrulama belirteci dahil formun tüm verileri göndermek istiyorsanız, sadece kullanabilirsiniz:
var $form = $('form');
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
// "get" or "post"; overridden by Rails' hidden "_method"
// input value, e.g., "put"
data: $form.serialize(),
// Includes hidden "authenticity_token" and "_method" inputs
complete: function(data) {}
});
Bu desen zaten JS olmadan çalışır bir form yazdım çoğu zaman yararlıdır ve' formun verilerini Ajax üzerinden gönderen göze batmayan bir JS katmanı ekleyerek.
Harika, teşekkürler ton! Bir çekicilik gibi çalıştı. –