2013-06-28 35 views
1

我有一個C#網絡API MVC 4應用程序的服務器上運行的服務的iOS應用。 但初級講座總是Ajax和應用的contentType JSON總是返回內部服務器錯誤

contentType: 'application/json', 

和應用程序返回ERR 500

$("#find_cep").click(function() { 
    var version = "v1"; 
    $.ajax({ 
     url: version + "/Address/find_cep", /* URL que será chamada */ 
     type: 'POST', /* Tipo da requisição */ 
     contentType: 'application/json', 
     data: { 
      id: version, 
      method: "find_cep", 
      params: { 
       address_cep: $("#address_cep").val() 
      } 
     }, /* dados que setão enviados via POST */ 
     cache: false, 
     success: function (data) { 
      alert(JSON.stringify(data, null, 2)); 
     }, 
     error: function (e) { 
      console.dir(e); 
      alert("Erro"); 
     }, 
    }); 
}); 

如果刪除的行中的方法能正常工作,但IOS開發團隊說,他們需要通過這項的contentType。我正在尋找某種IIS配置,但沒有找到。

有人可以幫我嗎?

編輯 這裏是控制器代碼。

注意日誌功能。日誌DOESNT記錄任何東西,所以,我猜這個代碼無法到達。

[HttpPost] 
public object find_cep([FromBody]PostBase<Address> viewmodel) 
{ 
    Log.SetLog(viewmodel.Params); 
    Log.ErrorLog("LEandro barbicha"); 

    var stopwatch = new Stopwatch(); 
    stopwatch.Start(); 
    try 
    { 
     var address = DBExecuteSql.GetAdressByCEP(viewmodel.Params.address_cep); 

     if (address.address_city != null) 
     { 
      return ReturnExpcted.ReturnResultExpected(stopwatch, true, address, "", "0", viewmodel.id); 
     } 
     throw new Exception(String.Format("Nenhum endereço encontrado para o cep {0}", viewmodel.Params.address_cep)); 
    } 
    catch (SqlException se) 
    { 
     Log.ErrorLog(se.Message); 
     return ReturnExpcted.ReturnResultExpected(stopwatch, false, new object(), se.Message, se.ErrorCode.ToString(), viewmodel.id); 
    } 
    catch (Exception e) 
    { 
     Log.ErrorLog(e.Message); 
     return ReturnExpcted.ReturnResultExpected(stopwatch, false, new object(), e.Message, e.GetType().Name, viewmodel.id); 
    } 
} 
+0

這是一個服務器錯誤。我們需要查看服務器代碼。 – 2013-06-28 21:14:57

+0

您可以使用ie/chrome或fiddler的內置工具找到您實際請求的內容類型嗎? – codetantrik

回答

0

您正在設置json內容類型,但發送數據爲application/x-www-form-urlencoded
如果內容類型必須設置爲application/json,那麼也許你應該發送JSON代替。

$("#find_cep").click(function() { 
    var version = "v1"; 
    $.ajax({ 
     url: version + "/Address/find_cep", /* URL que será chamada */ 
     type: 'POST', /* Tipo da requisição */ 
     contentType: 'application/json', 
     data: JSON.stringify({ 
      id: version, 
      method: "find_cep", 
      params: { 
       address_cep: $("#address_cep").val() 
      } 
     }), /* dados que setão enviados via POST */ 
     cache: false, 
     success: function (data) { 
      alert(JSON.stringify(data, null, 2)); 
     }, 
     error: function (e) { 
      console.dir(e); 
      alert("Erro"); 
     }, 
    }); 
}); 
+0

客戶心不是一個C#應用程序:( –

+0

只是解釋,我的樣品是用C#應用程序,但與iOS應用,我們得到的錯誤太 –

+0

@LeandroDeMelloFagundes你確定你需要的內容類型是JSON,它,它的工作原理,而不該再它可能不應該在那裏。 – Musa

0

我有同樣的問題我固定使用以下方法

$("#find_cep").click(function() { 
var version = "v1"; 
$.ajax({ 
    url: version + "/Address/find_cep", /* URL que será chamada */ 
    type: 'POST', /* Tipo da requisição */ 
    contentType: 'application/json', 
    data: { 
     "id": version, 
     "method": "find_cep", 
     "params": { 
      address_cep: $("#address_cep").val() 
     } 
    }, /* dados que setão enviados via POST */ 
    cache: false, 
    success: function (data) { 
     alert(JSON.stringify(data, null, 2)); 
    }, 
    error: function (e) { 
     console.dir(e); 
     alert("Erro"); 
    }, 
}); 

});

你可以看到參數應在「顯示」。

相關問題