2011-03-09 10 views
10

dağıtıldığında çalışmıyor Bu nedenle, MVQ jQuery kullanarak bir div doldurmak için kullandığım bir açılanma sahip olan bir uygulama var. Yerel olarak iyi çalışıyor, ancak sunucuya dağıttığımda yanlış yönlendiriliyor. İşte benim jquery: Yerel olarak bu iyi çalışıyor. Benim sunucuya dağıtıldığında Ama ben sadece jquery işlevinde/Ev/Kategori önce benim uygulamanın adını ekleyerek çözebilirsiniz http://myserver/mywebsite/Home/Categorymvc 3 için jquery postasını kullanma

yerine http://myserver/Home/Category arayan gibi görünüyor, ama bu doğru gelmiyor ...

Ayrıca/Home'dan önce /, ~ /, ../../ eklemeyi denedim ama bu hiç farketmedi.

Bu küçük sorun için herhangi bir çözüm var mı? Teşekkürler!

cevap

13

Seçenek 1

jQuery yöntem görünümünde belirttiğiniz eylem adını ve denetleyici adını kullanarak Url.Action()

bir eylem yöntemine bir tam URL'yi üretir kullanabilirsiniz varsayarak .

$("#ddlCategoryMain").change(function() { 
    $.post('<%=Url.Action("Category", "Home")%>', { mileID: $(this).val() }, function (data) { 
     refreshDiv($("#main"), data); 
    }); 
}); 

Ya da bu harici js jilet

$("#ddlCategoryMain").change(function() { 
    $.post('@Url.Action("Category", "Home")', { mileID: $(this).val() }, function (data) { 
     refreshDiv($("#main"), data); 
    }); 
}); 

Seçenek 2

yöntem ise kullanıyorsanız size görünümünde bir küresel değişkeni bildirmek olabilir dosya.

var myUrl = '@Url.Action("Category", "Home")'; 

ve sonra $.post

$("#ddlCategoryMain").change(function() { 
    $.post(myUrl , { mileID: $(this).val() }, function (data) { 
     refreshDiv($("#main"), data); 
    }); 
}); 
+0

Teşekkür ederiz! İlk seçeneğiniz aradığım bir şeydi ama bir şekilde çalışmadığı için yanlış yapmış olmalı. Şimdi yapıyor! – LanFeusT

+0

URL.action() olmadan neden çalışmadığını bilen var mı? – mzonerz

0

değil doğrudan bir cevap, ama bu benim jQuery eklediğinizde benim Zend MVC sitesinde böyle yaparız - Ben temel olarak bir var ayarlamak URL - sonra ajax çağrısında, varışı yolun önüne yerleştirin.

Benim için yapardım:

$this->jQuery()->addOnLoad('var baseURL = "'.$this->baseUrl('').'";'); 

Sonra kullanabilirsiniz;

$.post(baseURL+"/Home/Category/"...... 
2

biz Kodu sunucuya dağıtırken Aynı sorunla karşı karşıya edildi lokal o kadar bu bize çok yardımcı oldu gerçekten iyi çalıştı.

Biz Razor kullanıyor ve bu yaptığımızı ne:

$.post("/Home/PostEditProduct/", { } ... 

ve şimdi

$.post('@Url.Action("PostEditProduct","Home")', { } ... 

ile değiştirilir ve çalışıyor.

+0

@ Url.Action (..) kullanımı MVC ile her zaman iyi bir karardır! Asla yolu kodlamayın, böylece rotaları dinamik olarak sonradan değiştirebilirsiniz. – Max