2012-10-17 5 views
0

jquery로 대상 URI를 동적으로 생성하는 버튼이 있습니다. 컨트롤러 동작은 데이터베이스에 대한 업데이트를 수행 할 것이고 처음에 호출하는 뷰를 표시하려고합니다. 이보기는 다를 수 있습니다. 어떻게 그런 시나리오를 다루십니까?컨트롤러에 값을 전달하고 콜보기로 돌아 옵니까?

아이디어는 레이블을 클릭하고 번역을 제공하고 저장을 클릭하면 현재 페이지에서 번역을 볼 수 있습니다. 하나의 페이지로 잘 만들었지 만 그것을 확장하는 것은 문제입니다.

내가 현재 페이지 URI를 전달할 수 있고 '손으로'구문 분석하여 RedirectToAction에 넣을 수 있지만 더 깨끗한 방법이 있습니까?

답변

1

나는 PUT을 사용하고 성공시 현재 페이지의 레이블을 업데이트합니다.

ajax 호출을 while 루프로 랩핑하지 마십시오. 성공 함수는 서버가 성공을 반환하는 경우에만 호출됩니다 (일부 HTTP 200 상태 또는 기타에서 실행 된 것으로 가정하는 문서를 확인하지 않음)

성공시 다시로드하려면 다음과 같이하십시오.

$.ajax({ 
    type: 'PUT', 
    url: /my/url/for/adding/a/translation, 
    data: theTranslation, 
    success: function() {window.location.reload(true);} 
}); 
+0

하지만 어떻게 성공했는지 확인 하시겠습니까? 나는이 행운을 빕니다'$ [ "a [class = 'save']"). ((! updateSuccessful)) { $ 아약스 ({ 유형 : 'PUT', URL : $ (이) .attr ('HREF'), 성공 : updateSuccessful = 사실 }); } window.location.reload (TRUE); }); ' – ergot

+0

잘 업데이트 된 답변이 효과가있는 것 같습니다. 어떻게 든 이전에는 페이지가 새로 고쳐 지지만 업데이트가 발생하지 않았습니다. 실제 아약스 호출이 끝나기 전에 문제가 페이지를 새로 고침으로 인해 발생 했나요? – ergot

+0

이것은 웜입니다. 사용하려고하는 문자는 지원되지 않지만 포럼의 다른 곳에서 답변을 찾을 수있는 문제가 있다고 생각합니다. – ergot

0

jquery.put을 사용하여 작업을 호출하십시오.

이렇게하면 리디렉션이 발생하지 않고 대신 컨트롤러에서 반환을 처리하고 페이지 DOM 클라이언트 측을 직접 업데이트하는 클라이언트 측 기능을 사용할 수 있습니다.

+0

은 자원을 변경할 URL에 실제로 jquery.get을 사용해서는 안됩니다. 이게 창조물 인 것 같아. PUT을 사용해야 해. –

+0

Fair point, 지금 편집. –

관련 문제