2014-03-13 34 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和圖像

這是我的控制器

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

回答

0

無法通過AJAX(設計)上傳文件,除非你使用了利用其他「技術」,如閃存,或iFrame插件 - 這是一種安全措施,如JavaScript上讀取本地文件你媽achine不會是最好的主意

一個選擇在這裏:http://jquery.malsup.com/form/

...否則我建議找了許多其他的選擇之一!

0

你得到的數據基地64後,你的JSON應該從你的控制器是一個對象 您的JSON應該是這樣的

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

而且在客戶端,你應該有一個對象上您調用JSON.stringify()

變種OB = {JSON:imageDataAsBase64,文件:fileDataAsBinary}

雖然我沒有看到同時發送的原因。 如果你需要的只是轉移一個圖像,你只需要將圖像作爲base64並將其作爲json發佈即可

+0

您還可以製作一個bew對象var newObject = {token:「your token」}並且只需添加圖像作爲屬性newObject.imageAsBAse64 =「base64StringHere」併發送整個對象。在服務器端,您只需提取所有內容 –