2010-12-13 7 views
3

숨겨진 iframe을 대상으로 파일 업로드 입력 항목이있는 양식이 있습니다. 양식이 iframe에 게시되면 서버는 파일을 처리하고 json 객체를 반환합니다. 그 문제에 대한 jquery, 또는 일반 오래된 자바 스크립트, 반환 된 개체를 수신 대기하는 방법을 잘 모르겠습니다. 나는 ... 같은 내 iframe 대응 설정 몇 가지 코드가jquery로 반환 된 json 객체를 수신하는 방법

$("#upload_target").load(function() { 
    //what to do here - how do I get the json object? 
}); 

사람이 iframe을 다시 전송 년대 JSON 개체를 수신하도록 jQuery를 묶는 방법을 알고 있나요? 감사.

+0

대신 ajaxComplete() 또는 getJSON()을 사용해 보셨습니까? 어느 쪽이든 http://api.jquery.com/load/에서 자세한 사용법에 대한 load() 샘플을 찾을 수 있습니다. (죄송합니다 더 많은 도움이 될 수 없다) – Mantar

답변

5

나는 마침내 올바른 방법

$("#upload_target").load(function (data) { 
    if (data != null){ 
     var obj = jQuery.parseJSON(data); 
     //...work with obj here. 
    } 
}); 

여부 .... 그것을 어떻게 알아 냈 여부, 그것을 작동합니다.

편집 - 실제로 나는 조금 앞서 나 자신을 얻었다. 여기에 내가도 변경했다

$("#upload_target").load(function(){ 
     var retval = $(frames['upload_target'].document).text(); 
     if (retval != null) 
     { 
      try{ 
       var obj = jQuery.parseJSON(retval); 
       //...work with obj here. 
      }catch(err){} 
     } 
}); 

것은 내 MVC 컨트롤러 액션이 "/ 일반 텍스트"를 JSONResult.ContentType = 설정 한 것을 확인했다 .... 올바른 코드입니다. 그렇지 않으면 나는 다운로드 대화 상자로 저장을 얻고 있었다.

+0

고마워, 나는 단지 해결책을 찾고있다. – user200340

+0

답변으로 표시해야합니다. 분명히 대답 한 사람 외에 질문을 이해 한 사람이 없거나 iframe을 사용해야하는 이유가 없습니다. – Jereme

0

당신은 load이 방법을 사용해야합니다

$("#upload_target").load(
    "http://example.com/myjson.php", 
    function(response, status, xhr) { 

    }); 

을하지만, Ajax와 JSON 당신이 후, $.getJSON, 또는 $.get, 또는 $.post 또는 $.ajax을 (사용해야에 대한 이러한 기능은 매개 변수로 인수 콜백 기능을 결과 포함).

+0

나는이 상황에서 그때 게시물을 사용하는 방법에 대한 명확하지 않다. 숨겨진 iframe을 대상으로하고 파일을 업로드하기 위해 일반 양식 포스트를 사용하는 양식이 있습니다. 서버는 iframe으로 보내지는 json 객체를 반환합니다. $ .getJSON 또는 $. post는 서버가 이미 json을 리턴하고있는 곳의 scenerio에서 어떻게 작동합니까? –

+0

응답에는 JSON 데이터가 포함됩니다. getJSON 또는 post 모두 load 함수와 같은 종류의 콜백을 사용합니다. jQuery 웹 사이트 및 많은 자습서에 대한 예가 있습니다. –

+0

좋아, 나는로드 기능을 오해했다. 페이지가로드 될 때들을 수 있도록 설정되어 있다고 생각했습니다. 어쨌든,이 모든 방법들은 데이터를로드 할 url을 기대하고 있습니다. 내 장면이 어떻게 작동하는지가 아닙니다. 양식이 게시 된 후 json 객체를 서버의 iframe에 이미 보내고 있으므로 $ .getjson 또는 $. post 단계가 지난 것입니다. 이러한 방법 중 하나를 사용하지 않고 반환되는 json을 수신 대기하도록 iframe 페이지를 설정할 방법이 없습니까? 이 중 하나를 사용하면 json 응답을 위해 내 서버에 전화를 걸려고하는데 이는 작동하지 않는 방법입니다. –

4

이러한 종류의 요청에는 .load()을 사용하지 마십시오. 선택한 요소에 응답을 삽입합니다. 그것은 분명히 당신이 원하는 물건에 대해 말할 때 원하는 것이 아닙니다. (jsondataType로 또는 $.post()) $.getJSON()을 시도해보십시오

// $.getJSON uses HTTP GET 
$.getJSON('http://example.com/ajax', function (data) { 
    // data is an object 
}); 

// the same with $.post for POST requests 
$.post('http://example.com/ajax', function (data) { 
    // data is an object 
}, 'json'); 
관련 문제