2016-03-17 79 views
0

My Steps: step1。上傳一個文件到服務器 step2。服務器獲取文件並將其保存到存儲 step3。服務器將結果(成功或失敗)返回給客戶端上傳文件在jquery ajax到asp.net,但結果json失敗

Step3中的程序錯誤, textStatus = parsererror; readyState的:4

在客戶端:

var data = new FormData(); 
data.append("file", document.getElementById('file').files[0]); 
data.append("id",$('#saveClassID').val());     

$.ajax(
     { 
      url: uploadFile, 
      data: data, // 
      type: 'post', 
      async: false,  
      contentType: false,    
      dataType: 'json', 
      processData: false, 
      success: function (data) {     
       if (data.status == "OK") {      
        alert('success'); 
       } 
       else { 
        alert(fail); 
       } 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
       console.log(textStatus, errorThrown); 
      } 
     }); 

在服務器端:

[HttpPost] 
    public ActionResult uploadFile() 
    { 
     HttpPostedFileBase file = (HttpPostedFileBase)Request.Files["file"]; 
     int save_id = Convert.ToInt32(Request.Form["id"].ToString()); 

     Result result = new Result(); 
     if (file != null) 
     { 
      if (file.ContentLength > 0) 
      { 
       //savedata, and get result public Result saveData(file,id) 
        result = saveData(file,id);   
      } 
      else 
      { 
        result.msg="error"; 
        result.staut="fail"; 
      } 
     else 
     { 
      result.msg="no file"; 
      result.status="fail"; 
     } 
     return Json(result, JsonRequestBehavior.AllowGet); 

    } 

    public class Result 
    { 
     public string status; 
     public string msg;   
    } 

我不知道如何修改我的代碼, 1.如果我修改代碼在客戶端,「contentType:false」到json, 服務器端將無法獲得「ID」, 2.if我修改了服務器端的代碼進行測試, 「return Json(return Json(new {狀態= 「OK」},JsonRequestBehavior.AllowGet);」 ,代碼依然未能

謝謝

+0

您需要首先製作您的Result屬性,而不是字段({'get; set;}' –

+0

除非您在某處定義了某個變量,否則其''alert ');'(引號) –

+0

將您的成員變量作爲屬性 示例:'public string Status {get; set;}' –

回答

0

嘗試

return Json(new {result}, JsonRequestBehavior.AllowGet); 

相加的結果特性,而不是字段(後{獲得;組; })作爲@Stephen Muecke提到