2013-04-19 25 views
5

Bir node.js uygulaması yazıyorum ve sunucuya göndermek için posta verilerini nasıl oluşturduğum konusunda biraz endişeliyim. bağlantı tıklandığındaHref'de bir POST isteği için veri saklama - kötü uygulama?

<a class='delete' href="1231">Delete this data</a> 
<!-- href is based on a variable I'm pulling from the server --> 

, varsayılan eylemleri önlemek ve daha sonra bir ajax isteği çalıştırın::

bir veri öğesini silmek istediğinizde Örneğin, ben href özelliğindeki söz konusu ürünün kimliği koymak
//On click + ajax 
body.on('click', '.delete', function(e){ 
e.preventDefault(); 
    $.ajax({ 
     type: 'POST', 
     url: '/admin/report/detail/delete', 
    data: {id: $(this).attr('href')}, 
    success: function(){ 
     //Success message 
    }, 
    error: function(){ 
     //Error message 
    } 
}); 
}); 
merak ediyorum

, bu şekilde href niteliğini kullanmak kötü bir uygulamadır? Öyleyse, bu verileri depolamanın en iyi yolu nedir?

cevap

9

verileri kullanın yerine bağlıyor. Bunları href'te saklamak anlamsız değildir, bazen kimlikleri ve diğer zamanlarda diğer verileri depolamak isterseniz ne olur? İstediğiniz kadar çok veri niteliği oluşturabilir ve onlara anlamsal isimler verebilirsiniz.

<a class="delete" data-id="1231" href="#"> 

Sonra javascript:

... 
data: { id: $(this).data('id') } 
... 

VEYA

data: { id: $(this).attr('data-id') } 
+0

Teşekkürler, bu düşündüğümü tam olarak buydu. Benim href basit bir '#' olmalı? –

+0

Evet, bir karma ajax çapalar için en yaygın href. Ben her zaman kullanırım. Ayrıca javascript:; kullanabilirsiniz, ama bu html kirletir ve gereksizdir. Bunun için –

2

, her zaman için silinecek kaydın kimliğini göndermek zorunda gidiyoruz Dürüst olmak gerekirse Sunucu, ancak bunu yaparsınız. Veri öznitelikleri yapsanız bile, buradaki sorun bu değil, insanların kimliğini görebilmesi için verileri "tel üzerinden" AJAX aracılığıyla gönderiyorsunuz.

Düşünmeniz gerekir - tamam, bu ID değiştirilebilir, ancak bununla birlikte akıllısınız, insanlar bunu değiştirmek ve farklı müşteri kimliklerini silmek için bir yol bulacaktır ... böylece ... her zaman emin olun İlgili güvenlik kontrolleri sunucu tarafındaki sunucu denetimini yapıyorsunuz, yani oturum açmış olan kullanıcı kimliğini silebilen mevcut kullanıcı mı?

+0

+1, cevabım semantiklerle ilgili, fakat güvenlikle ilgili sorularınız varsa, bu cevap yerinde. Sizin için –

+0

ve +1, sizden daha fazla soru anladınız, bunu bir güvenlik bağlamında aldım. –

+1

Evet, sunucu tarafında yerinde kimlik doğrulaması var. Aslında, tüm bu silme isteklerini GET'ten POST'a dönüştürüyorum (kodu ilk yazarken ne düşündüğümü sorma). –