2014-03-25 113 views
0

我有一個Edit.cshtml頁面,有1個部分模板調用。在模板中我做一個Ajax調用我的控制器是家庭和行動的名字是SAVEDATA當我打電話給ajax那裏的url錯了,爲什麼?

AJAX功能

$.ajax({ 
     url: "CountryZone/SaveData", 
     type: 'POST', 
     data: { data: selectedID, id: id }, 
     dataType: "html", 
     success: function (result) { 
      alert("Success"); 


     }, 
     error: function (result) { 
      data.str = null; 
      alert("Error"); 


     }, 
    }); 

控制器: -

public ActionResult Savedata(string data, int CountryZoneId) 
    { 
     return null; 
    } 

現在,當我的Ajax調用會

有網址錯誤:---網址是主頁/編輯/首頁/ Savedata而不是此僅有主頁/保存數據

回答

1

在MVC應用程序中硬編碼URL是一個壞主意。

改變這一行:

url: "CountryZone/SaveData", 

向該:

url: "/CountryZone/SaveData", 

我建議至少使用視圖Url.Action並將其存儲在JS變量。

+0

謝謝你的建議,你可以告訴在MVC應用程序的URL我的好主意? –

+0

@Vinit_Patel Amit Agrawal解決方案可以在'* .cshtml'中工作,但不會在單獨的'* .js'文件中工作,所以我更願意在視圖中存儲URL,然後使用它們是js代碼。像這樣:'var myUrl ='@ Url.Action(「MyAction」,「MyController」)'' – webdeveloper

+0

@Vinit_Patel這保證在更改路由之後,所有的代碼都可以在沒有任何改變的情況下工作,如果你的應用程序不會根域級別。像這樣:mydomain.com/level/mysite – webdeveloper

1

使用標準的MVC代碼如下:

url: '@Url.Action("SaveData","CountryZone")', 

全碼

$.ajax({ 
     url: '@Url.Action("SaveData","CountryZone")', 
     type: 'POST', 
     data: { data: selectedID, CountryZoneId: id }, 
     dataType: "html", 
     success: function (result) { 
      alert("Success"); 


     }, 
     error: function (result) { 
      data.str = null; 
      alert("Error"); 


     }, 
    }); 

    [HttpPost] 
    public ActionResult Savedata(string data, int CountryZoneId) 
    { 
     return null; 
    } 
+0

謝謝Amit Agrawal先生 –

相關問題