我想基於另一個下拉列表的選擇填充一個下拉列表。MVC jquery調用控制器方法不起作用
我知道這是一個相當普遍的問題,並且整整兩天,我一直在嘗試不同的樣本,我在網上找到了,無濟於事!
這裏是我的代碼:
控制器:
public List<SelectListItem> listTestCases(string id)
{
IQueryable<SelectListItem> A = repository.listTestCases(id);
return (A.toList());
}
public JsonResult listTestCases_2(string id)
{
IQueryable<SelectListItem> A = repository.listTestCases(id);
return Json(A);
}
我有兩種方法,其中之一返回一個列表,另一個JSONResults,我嘗試了一切,我在網上發現了兩個方法。 腳本:
<script>
$(document).ready(function() {
$('select#testCategoriesUniqueId').change(function() {
var testCategory = $(this).val();
$.ajaxSetup({ cache: false });
alert(testCategory);
$.getJSON("TestInput/listTestCases/" , {id: testCategory}, function(data) {
alert("here");
});
});
});
與上面的代碼,代碼經過了listTestCases,並且得到的結果,但它不會去的成功的功能。 (不提示)
我曾嘗試:
$.getJSON("TestInput/listTestCases/" + testCategory, null, function(data) {
alert("here");
});
不出意料相同的結果。
我甚至嘗試:(JSON-P)
$.ajax({
url: "TestInput/listTestCases/" + testCategory,
dataType: "json-p",
success: function(data) {
alert(data.length);
var S = "";
$("#testCasesUniqueId").removeOption(/./);
for (var i = 0; i < data.length; i++) {
S += data[i];
var val = data[i].Value;
var text = data[i].Text;
$("#testCasesUniqueId").addOption(val, text, false);
}
alert(S);
}
}
);
,結果是一個字符串(System.collections.List [... SelectListItem],不給我列表的對象。所以我listTestCases2試了一下,它甚至沒有調用方法。
我讀的地方,我需要使用POST而不是弄的,我甚至試過postJSON,並沒有結果。
基本上我」 m超級迷失。
它不工作。甚至沒有去成功的一部分。 – Athena
你不應該硬編碼的網址,你不應該硬編碼的URL以'/'開頭。當你這樣做的時候,你認爲網站總是作爲域名的根網站運行,而這往往不是這種情況。即使它在生產中會以這種方式運行,也會限制您在虛擬目錄中站立測試站點的能力 – Zack