MVC 컨트롤러에 대한 Ajax 호출 - URL 문제
이전에 게시된 jQuery/MVC 질문을 살펴보았지만 실행 가능한 답변을 찾지 못했습니다.
다음과 같은 JavaScript 코드가 있습니다.
$.ajax({
type: "POST",
url: '@Url.Action("Search","Controller")',
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
}
});
Url을 호출할 때 게시물은 다음과 같습니다.
NetworkError: 500 Internal Server Error - <a href="http://localhost/Web/Navigation/@Url.Action(%22Search%22,%22Chat%22)"></a>
왜 이렇게(뒤에 있는 논리) 돌려주고 해결책은 무엇입니까?
추신: 추가 정보: %22는 <<>> 문자의 URL 인코딩 참조입니다.
이것이 작동하기 위해서는 JavaScript가 레이저 뷰 내에 배치되어 라인이
@Url.Action("Action","Controller")
Razor에 의해 구문 분석되고 실제 값이 대체됩니다.
보기로 JavaScript를 이동하지 않으려면 보기에서 설정 개체를 만든 다음 JavaScript 파일에서 해당 개체를 참조할 수 있습니다.
예.
var MyAppUrlSettings = {
MyUsefulUrl : '@Url.Action("Action","Controller")'
}
및 .js 파일:
$.ajax({
type: "POST",
url: MyAppUrlSettings.MyUsefulUrl,
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
}
});
또는 HtmlHelper 내에서 프레임워크에 내장된 Ajax 메서드를 활용하여 JS 코드로 보기를 "오염"하지 않고도 동일한 작업을 수행할 수 있습니다.
코드 예제에 유형 오류가 있습니다.당신은 곱슬머리를 잊어버립니다.success
$.ajax({
type: "POST",
url: '@Url.Action("Search","Controller")',
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
}
})
;
뷰를 포함하지 않고 이를 수행하는 좋은 방법은 다음과 같습니다.
$.ajax({
type: "POST",
url: '/Controller/Search',
data: { queryString: searchVal },
success: function (data) {
alert("here" + data.d.toString());
}
});
다음 URL에 POST를 시도합니다.
"http://domain/Controller/Search(사용할 작업의 올바른 URL)"
Rob의 답변을 시작으로, 저는 현재 다음과 같은 구문을 사용하고 있습니다.그 질문이 많은 관심을 받았기 때문에, 저는 당신에게 그것을 공유하기로 결정했습니다.
var requrl = '@Url.Action("Action", "Controller", null, Request.Url.Scheme, null)';
$.ajax({
type: "POST",
url: requrl,
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
}
});
mihai-labo의 답변에서 시작하여, requrl 변수를 선언하는 것을 건너뛰고 URL 생성 코드를 다음과 같이 "url:" 바로 앞에 놓는 것은 어떨까요?
$.ajax({
type: "POST",
url: '@Url.Action("Action", "Controller", null, Request.Url.Scheme, null)',
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
}
});
URL에 액세스하는 간단한 방법이 코드 사용
$.ajax({
type: "POST",
url: '/Controller/Search',
data: "{queryString:'" + searchVal + "'}",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.d.toString());
});
언급URL : https://stackoverflow.com/questions/9988634/ajax-call-into-mvc-controller-url-issue
'bestsource' 카테고리의 다른 글
스크립트와 실행 파일 앞에 ".\"가 와야 하는 PowerShell 요구 사항을 제거하려면 어떻게 해야 합니까? (0) | 2023.08.22 |
---|---|
마지막 자식보다 먼저 요소를 선택하려면 어떻게 해야 합니까? (0) | 2023.08.22 |
MySQL의 COUNT CASE 및 WHEN 문 (0) | 2023.08.22 |
Excel에서 첫 번째 문자를 소문자로 만드는 방법 (0) | 2023.08.22 |
순수 Java 구성을 사용하는 Spring 3.2 @value 주석은 작동하지 않지만 Environment.getProperty는 작동합니다. (0) | 2023.08.22 |