2009-11-08 7 views
0

을 통해 다시 결과를 전달 기본적으로 내 Asp.net 컨트롤러에서이이것은 왜 Firefox에서만 작동합니까? Asp.net MVC 부분보기의 렌더링 및 아약스

이 내 ParitalView 테이블과 "데이터"를 렌더링

public ActionResult RenderMyView() 
{ 
    data = // some data to used in rendering my partial view 
    return PartialView("PartialView", data); 

//edit 
    I also return a json result if an error occurs. Say if I get an SQLException I will return a json result back and not render any partialview. 
} 

는 기본적으로 열입니다 데이터베이스에서. 그래서 그것은 많은 행을 가진 테이블을 생성하는 데이터에서 정보를 취합니다.

이것은 내 Java 스크립트 파일에 있으며 드롭 다운 목록 항목이 변경되면 활성화됩니다.

$.getJSON('RenderMyView', { 'field': field}, function(response) 
{ 
    $('#id').after('<div>' + response + '</div>'); 
}); 

는 그래서이 일은 전화가 partialView을 렌더링하고 내 페이지에 응답 코드를 추가하는 것을 RenderMyView입니다.

이것은 내 생각입니다. 내 컨트롤러로 이동하여 PartialView를 렌더링하고 반환합니다. 일단 그것이 렌더링되면 그것은 단지 html입니다. 그래서 그것은 html을 다시 보내고, 그 div 코드를 div에 추가합니다.

Firefox에서 예상대로 작동하지만 다른 브라우저는 작동하지 않습니다. 나는 오페라, 구글 크롬, 인터넷 익스플로러 8, 사파리를 다 피곤했다.

믿을 수있는 방화범이 끌리지 않는 이유는 전혀 알지 못합니다.

피곤 IE 8 불을 지르고 클론을 사용하지만, 어떤 이유로 그것은

$('#id').after('<div>' + response + '</div>'); 

내가 모든 라인에 포인트를 중단 넣어이 부분에하지 않고는 서버의 끝 이잖아 그와 같은 이동 후 디버깅 결코 다시 디버거로 이동하고 아무 오류가 서버 쪽에서 VS2008 디버거 함께 걷고 오전 이후 아무것도 충돌이 발생합니다.

편집

전혀 응답 부분으로 갈 것으로 보인다. 경고 상자를 거기에 놓은 것처럼 절대로 트리거되지 않습니다.

답변

1

부분보기가 JSON 결과를 반환합니까? 그렇지 않은 경우 다른 브라우저가 JSON 결과를 기대하고 Html/text 결과를 받기 때문에 호출이 작동하지 않을 수 있습니다.

부분 뷰가 Html을 반환하면 jQuery Ajax 호출을 사용해야합니다.그런 다음 사업부에 결과를 덤프하려는 경우

$.ajax() 

은 나, 나는 Ajax 호출을 실행하고 선택한 요소

로 덤프

$("#Id").load("/RenderMyView/"); 

를 사용하려면 편집

컨트롤러에서 오류를 catch하고 오류 메시지가 포함 된 콘텐츠 결과를 반환해야합니다.

public ActionResult RenderMyView() 
{ 
    try 
    { 
    data = // some data to used in rendering my partial view 
    return PartialView("PartialView", data); 
    } 
    catch(Exception e) 
    { 
    //catches any errors returns it back as plain text 
    //log the error that was thrown 
    return Content("Error: " + e.Message); 
    } 
} 

콘텐츠는 컨트롤러에서 일반 텍스트를 반환합니다. 그런 다음 JavaScript에서이 결과를 확인해야합니다.

$.ajax({ 
    url: 'RenderMyView', 
    data: {field:'field'}, 
    dataType: 'html/text', 
    success: function(response) { 
    if (response.indexOf("Error:") == 1) { 
     //handle error 
    } 
    else { 
     $('#id').after('<div>' + response + '</div>'); 
    } 
    } 
}); 
+0

아니요 내 부분보기가 json을 반환하지 않습니다. 예제 코드에 표시되지 않은 것은 해당 메서드에서 무언가가 실패한 경우입니다. json 결과를 반환하는 SQLExecption이 발생한다고 가정 해보십시오. 그래서 나는 때때로 json 결과와 때로는 HTML 결과를 반환합니다. 다른 브라우저에서이를 이해하도록 어떻게 변경할 수 있습니까? – chobo2

+0

컨트롤러에서 부분보기를 렌더링하여 문자열에 저장 한 다음 json 결과로 다시 보낼 수 있습니까? – chobo2

+0

나는 당신이 하나 또는 다른 것을해야한다고 생각한다. 오류 일 경우 왜 json 결과를 반환해야합니까? 부분보기가 대신 오류 메시지를 반환 할 수 없습니까? 자바 스크립트에서 오류가 반환 된 경우 무언가를하고 싶다면 반환 된 HTML에서 오류 텍스트를 찾을 수 있습니다. –

0

나는 전화를 선호한다.

$.post("/Home/jQueryGetCalendarItems", { month: this.id }, function(retHTML) { 

FF와 IE에는 작동하지 않습니다. 위 코드에서 PartialView를 returnion 한 다음 div의 내용을 바꾸는 것이 좋습니다.

편집

피려 다른 것은 #의 사용이다. 컨트롤 이름이 예상 한 것과 다를 수 있습니다. [보기/소스]를 수행하여 컨트롤 ID 등을 확인하십시오. 나는 자신이 '.ClassName'을 선호합니다.

0

HTML을 받으려면 $ .getJSON() 대신 $ .ajax()를 사용해야합니까? 이 일을하는 것이 효과가 있습니까?

$.ajax({ 
    url: 'RenderMyView', 
    data: {field:'field'}, 
    dataType: 'html', 
    success: function(response, textStatus) { 
     $('#id').after('<div>' + response + '</div>'); 
    } 
}); 
+0

"아웃 에지"게시물에 넣습니다. – chobo2

관련 문제