2012-02-16 19 views
14

C# .NET MVC2 ile çalışıyorum ve bir veritabanı kaydını (RemoveRelation) silen bir yöntemi çağıran bir ajax formu oluşturmaya çalışıyorum. Kayıt silme işlemi amaçlandığı gibi çalışıyor. Kayıt silindikten sonra, form görsellerden gelen kaydı kaldıran bir javascript işlevi çağırmalıdır (RemoveRelation (10)). Bu, bir Internet Explorer 9 ve Firefox 4'te amaçlandığı gibi çalıştığı bir AJAX çağrısı ile yapılır, ancak bir sebepten dolayı bir AJAX çağrısı yapıldığında güncelleme gerçekleşmez ve kayıt silme formu dolduğunda tüm sayfa yenilenir gönderildi (bu formun AJAX işlevselliği ile oluşturulduğu varsayılan olarak yanlıştır). Neden Ajax.BeginForm Chrome'da çalışmıyor?

<% using (Ajax.BeginForm("RemoveRelation", "Relations", 
     new AjaxOptions { OnSuccess = "function() { RemoveRelation(10); } ", InsertionMode = InsertionMode.Replace, UpdateTargetId = "Relation10" }, 
     new { id = "DeleteForm10" })) 
    { %> 

Ayrıca Chrome'da Ben ayrı Ajax.BeginForm başka bir sorun vardır: Bu hangi ı formu elde ediyorum koddur.

<% using (Ajax.BeginForm("AddRelation", "Relations", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "AddRelation" }, new { id = "AddRelationForm" })) 
    { %> 

Yukarıdaki Başlangıç ​​Form kodu, kaldırılmaları yerine listeye İlişkiler eklemek için kullanılır. Bir kez daha vurgulamak istiyorum, IE9 ve FF4 üzerinde yukarıdaki gibi, bir ekleme ve ajax ile güncelleme yerine krom üzerinde amaçlanan çalışıyor, yerine yerine iki kez kayıt ekleme ve bir kez daha ajax güncelleme yerine tüm sayfayı yenilemek.

Bu neden kromda parçalanıyor?

+0

http://jquery.malsup.com/form/ yerine – Manatherin

cevap

1

olduğunu. Ben ajax formu en şöyle bir 'a' etiketi yoluyla göndermek çağırıyordu: Bir 'a' etiketinden '.submit()' çağırarak Nedense

<A href='#' onclick="javascript:$('#ajaxform').submit();">Remove</a> 

tam sayfa yenileme neden krom kadar karıştırmasını ajax çağrısı yerine. Bunun yerine aşağıdaki kodu kullanarak sorunu düzeltildi: Bu çözüm aynı zamanda çalıştı

<input type='submit' value='Remove' /> 

Ben silmeden önce onay isteyecek girişine komutları javascript eklemek için gerektiğinde. Tek sıkıntı, düğmelerimin gönderdikleri formda gerçekleştiğinden emin olmak için bazı işaretlemelerin arasında geçiş yapmam gerektiğidir (anladığım bir şey her durumda her zaman mümkün değildir).

+2

Onu saklayabilirdin. Sadece onclick'in sonundaki false değerini döndürmeniz gerekir (yani "onclick =" javascript: $ ('# ajaxform') olur. Submit(); false döndürür; "). Bunun nedeni, "a" etiketlerinin tarayıcının bağlantıya gitmesine (herhangi bir yere gitmese bile) dönmesine ve yanlış döndürmesi, varsayılan tarayıcı eyleminin gerçekleşmesini engellemesidir. Kaynak: http://jszen.blogspot.com/2007/03/return-false-to-prevent-jumping.html – SPFiredrake

12

Microsoft AJAX ve belirli webkit tarayıcılarıyla ilgili bir sorun var. Bu konuya kendim bir süre önce rastladım ve düzeltme oldukça basit. Bir webkit.js dosyası oluşturun ve içeriği bu koyun:

sizin betiği betik içinde veya yerde (tercihen bir ana sayfasında, ben sonuna yakın eklendi) sayfanıza ya Sonra
Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit 
if(navigator.userAgent.indexOf('WebKit/') > -1) 
{ 
    Sys.Browser.agent = Sys.Browser.WebKit; 
    Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]); 
    Sys.Browser.name = 'WebKit'; 
} 

eklemek komut dosyası başvurusu:

<Scripts> 
    <asp:ScriptReference Path="webkit.js" /> 
</Scripts> 
//OR 
<script src="webkit.js"> 

Bilgileri bulduğum orijinal siteyi hatırlayamıyorum, ancak bu ben this page'dan edinebildim. İyi şanslar!

+0

saçmalığı kullanmayı düşünebilirsiniz, bunun işe yarayacağını düşündüm ama şimdi bunun olmadığını, tam sayfa yenilemeyi sürdürdüğünü öğrendim. –

+0

Konsolda herhangi bir XmlHttpRequest hatası alıp almadığınızı öğrenin. Chrome konsolu Firebug gibidir, ancak yerleşik ve (IMO) kullanımı daha kolaydır. İlk olarak bu sorunu keşfettim, çünkü .NET AJAX JS dosyalarından birinde (dosyanın başında) başarısız oluyordu. – SPFiredrake

+0

Hiçbir XmlHttpRequest hatası veya bu konuyla ilgili herhangi bir hata veya uyarı almıyorum. –

1
Eğer mvc 3 içinde, asp.net MVC 3 kullanacak şekilde projeyi güncelleyebilir

, jquery ajax ben soruna bir garip çözüm bulduk varsayılan

+0

MVC'yi proje aşamasında bu aşamada güncellemek istediğim kadarıyla imkansız. Bu bir iş projesi ve çerçevedeki her şeyi değiştirmek her formu yeniden test etmek zorunda kalıyor ve çok fazla var. Patronum, bir ay daha test yapmak için hiç mutlu olmaz. –