2014-03-13 3 views
0

이 내가 JSON 만MVC4 AJAX 포스트 JSON

function test() { 
      var imgFile = document.getElementById('image'); 
      //   var imgData = JSON.stringify(getBase64Image(imgElem)); 
      //var imgData = Convert.FormBase64String(imgElem); 

      $.ajax({ 
       type: 'POST', 
       dataType: 'json', 
       url: "http://localhost:59102/Contacts/AddContact", 
       data: "json=" + "{\"token\":\"8mVm/nS1OfpU+nlQLbJjqXJ7kJI=VyLGI2GEKkGgtDt0babrAw==\"}", 

       success: function (returnPayload) { 
        console && console.log("request succeeded"); 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        console && console.log("request failed"); 
       }, 

       processData: false, 
       async: false 
      }); 

를 게시 제 기능을하고 난 이미지, 난 이것이 JSON 및 이미지

를 게시 할 필요가 내 데이터를 추가하는 방법을 잘 모릅니다 당신은 플래시, 또는 iframe이 같은 다른 '기술'을 활용하는 플러그인을 사용하지 않는 내 컨트롤러가

[HttpPost] 
     [AllowAnonymous] 
     public JsonResult AddContact(string json, HttpPostedFileBase file) 
     {} 

답변

0

당신은 (설계) AJAX를 통해 파일을 업로드 할 수 없습니다 -이 로컬 파일을 읽을 자바 스크립트와 같은 보안 조치입니다 너의 m achine은 좋은 생각을하지 않을 것입니다 여기 옵션이있다

: http://jquery.malsup.com/form/

그렇지 않으면 나는 많은 다른 대안 중 하나를 찾는 것이 좋습니다 ...! 당신이 기본 64에 데이터를받은 후

0

, 당신의 JSON은 컨트롤러에서 개체 을해야 당신의 JSON은 객체를 가지고 있어야 클라이언트 측에서 또한이

{"json":"something here that is a string","file":"some file"} 

과 같이 있어야하는에 나는 모두를 보낼 수있는 이유를 해달라고하지만

{fileDataAsBinary : imageDataAsBase64, 파일 JSON}이 작업은 JSON.stringify()

VAR 산부인과 =를 호출합니다. 만약 당신이 필요로하는 것만으로 이미지를 base64로 가져 와서 json으로 게시하기 만하면됩니다.

+0

bew 오브젝트를 만들 수도 있습니다. var newObject = {token : "your token"}보다 이미지를 newObject.imageAsBAse64 = "base64StringHere"속성으로 추가하고 Whole 개체를 보내면됩니다. 서버 측에서 모든 것을 추출하면됩니다. –