이 내 구현입니다는 ASP.NET MVC에서 사용 아약스와 JsonResult 내가 아약스와 액션으로 문자열 배열 또는 목록을 얻을 필요가 3
<div class="RoleAccess">
<select name="RoleDropDown">
<option value="0">Select Role</option>
<option value="61AD3FD9-C080-4BB1-8012-2A25309B0AAF">AdminRole</option>
<option value="8A330699-57E1-4FDB-8C8E-99FFDE299AC5">Role2</option>
<option value="004E39C2-4FFC-4353-A06E-30AC887619EF">Role3</option>
</select>
</div>
내 컨트롤러 :
namespace MyProject.Areas.GlobalAccess.Controllers {
public class AccessMenuController : Controller {
public ActionResult Index() { return View();}
[HttpPost]
public JsonResult RoleDropDownChanged(string roleId) {
Guid RoleId = new Guid(roleId);
//Some implement
List<string> actions = new List<string>();
for(int i = 0; i <= 10; i++)
actions.Add(i.ToString());
return Json(actions.ToArray(), JsonRequestBehavior.AllowGet);
}
}
}
하고 스크립트 :
$(document).ready(function() {
//Handle Checks of Actions by RoleName Changed
$('div.RoleAccess select').change(function() {
RoleChangeHandler();
});
function RoleChangeHandler() {
$.ajax({
url: '@Url.Action("RoleDropDownChanged")',
type: 'POST',
data: { 'roleId': '61AD3FD9-C080-4BB1-8012-2A25309B0AAF' },
dataType: 'json',
processData: false,
contentType: 'application/json; charset=utf-8',
success: function (data) { SuccessRoleChangeHandler(data); },
error: OnFailRoleChangeHandler
});
return false;
}
function SuccessRoleChangeHandler(data) {
alert("in success role change");
}
function OnFailRoleChangeHandler(result) {
alert('in OnFailRoleChangeHandler');
}
그리고 문제는 모든 드롭 다운의 변경과 함께 단지 Onfail
함수가 실행되고 "OnFailRoleChangeHandler"에서 경고합니다. 또한 RoleDropDownChanged
중단 점이있는 동작을 확인하고 실행되지 않습니다. 어디에서 문제가 발생합니까?
UPDATE
내가 크롬으로 페이지를로드 할 때 콘솔 창에 오류가 :
contentType: 'application/json; charset=utf-8',
당신은 어떤 JSON에를 전송되지 않습니다 http://MyProject/GlobalAccess/AccessMenu/@Url.Action(%22RoleDropDownChanged%22) 404 (Not Found) jquery-1.7.1.js:8102
디버깅 할 때 서버 메서드가 예외를 throw합니까? 자바 스크립트 코드 디버깅을 시도 했습니까? 이'@ Url.Action (% 22RoleDropDownChanged % 22)'이 있으면 당신의 스크립트가 Razor Engine에 의해 구문 분석되지 않습니다. – Kosta
. 스크립트를 면도기 뷰에 넣을 수 있으며 별도의 .js 파일에 넣을 수 없습니다. – Silvermind
@Kosta I update 질문 – Saeid