2015-11-03 48 views
0

我有一個問題,發佈數據到WebaPi控制器在HTML頁面中使用Jquery ajax ..當我通過提琴手測試它的意圖和工作正常,但是當我嘗試使用Ajax它只給出了錯誤..無法發佈數據到WebApi使用jQuery的HTML5

這裏是我的示例代碼..

var bookData = { 
       "CurrentCompany": "BizSight Sample Product Company", 
       "CompanyName": CompanyName, 
       "LegalName": "Biztech", 
       "Address1": Address1, 
       "Address2": Address2, 
       "City": City, 
       "State": State, 
       "Phone": Phone, 
       "ZipCode": ZipCode, 
       "Fax": Fax, 
       "Email": Email, 
       "Website": Website, 
       "CountryID": 1, 
       "federalTaxID": 1, 
       "CurrentUser": CurrentUser, 
       "BusinessType": BusinessType, 
       "CurrentFiscalYear": Jsondate 
      }; 
      $.ajax({ 
       type: "POST", 
       cache: false, 
       url: "http://77b2130d5c3446eea4e4210c51529230.cloudapp.net:8080/Create/", 
       data: JSON.stringify(bookData), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       processData: true, 
       success: function (data, status, jqXHR) { 
         var result = JSON.stringify(data); 
        $("#loading").show(); 
        alert("success..." + result); 
       }, 
       error: function (xhr) { 
        $("#loading").show(); 
        alert("Test3:" + xhr.statusText); 
       } 
      }); 

,當我從HTML發佈的數據,並檢查提琴手它給消息像下面的圖片

enter image description here 我錯過了這段代碼中的任何內容..?提琴手它自它的工作,但frmo html頁面無法正常工作..可以請你幫我如何解決和實現這一

我的API類`

public class CreateController : ApiController 
{ 
    public static string CompanyName = " "; 
    public static string con; 
    public static string sqlConnection; 
    public static string DatabaseName; 
    string TrustedConnection = "Yes"; 
    string DBServer = " "; 
    string FilePath = null; 
    string testFirstline = " "; 
    //clsLog objLog = new clsLog(); 
    bool isSuccess = false; 




    public string Post(DatabaseCls cls) 
    { 
     string ReturnMessage = "Success"; 

     // ReturnMessage = "Hello " + id + "_" + parameter1 + "_" + parameter2 + "_" + parameter3 + "_" + parameter4 + "_" + parameter5 + "_" + parameter6 + "_" + parameter7 + "_" + parameter8 + "_" + parameter9 + "_" + parameter10 + "_" + parameter11 + "_" + parameter12 + "_" + parameter13 + "_" + parameter14 + "_" + parameter15; 
     return ReturnMessage; 
    }} 

感謝 維克多.A

+0

你確定你需要這樣做:'數據:JSON.stringify(bookData),' –

+0

你能告訴你所得到的錯誤,的WebAPI方法和你試圖序列化的類?如果在從ajax調用該方法時發現該方法,但發現錯誤,那麼很可能您的對象不會序列化爲您指定的類型,或者您的webAPI尚未設置爲允許CORS請求。 –

+0

@timothy,我需要將json數據傳遞給我的api ..有沒有其他的..? –

回答

1

你看到的OPTIONS錯誤是因爲CORS。您需要將其添加到Startup.cs中的WebAPI以允許跨站點請求。

public void Configuration(IAppBuilder app) 
{ 
    app.UseCors(CorsOptions.AllowAll); 

    var formatters = configuration.Formatters; 

    //-- Disable XML support 
    formatters.XmlFormatter.SupportedMediaTypes.Clear(); 

    var jsonFormatter = formatters.JsonFormatter; 
    jsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json-patch+json")); 
    jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; 
    jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
    jsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; 
    jsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; 
} 

(編輯建議)

[RoutePrefix("api")] 
public class CreateController : ApiController 
{ 
    [HttpPost, Route("create")] 
    public IHttpActionResult Post([FromBody]DatabaseCls cls) 
    { 
     try 
     { 
      return Ok(new { success = true }); 
     } 
     catch 
     { 
      return InternalServerError(); 
     } 
    } 
} 

$.ajax({ 
    type: "POST", 
    cache: false, 
    url: "http://77b2130d5c3446eea4e4210c51529230.cloudapp.net:8080/api/Create", //note the additional "api" in url 
    data: JSON.stringify(bookData), 
    dataType: "json", 
    success: function (data, status, jqXHR) { 
     var result = JSON.stringify(data); 
     $("#loading").show(); 
     alert("success..." + result); 
    }, 
    error: function (xhr) { 
     $("#loading").show(); 
     alert("Test3:" + xhr.statusText); 
    } 
}); 
+0

謝謝斯蒂芬,我要檢查這個代碼,並讓你知道... –

+0

嗨,我無法爲[RoutePrefix(「api」)]添加名稱空間... –

+0

它在System.Web.Http中,如果你不能添加它,那麼你可以刪除它,並改變你的路線:[HttpPost,Route(「 api /創建「)] –