2017-04-24 83 views
0

我有一個MVC應用程序,我做ajax調用,但我現在需要做一個職位,並傳遞一個json對象。MVC ajax調用不通過參數

我似乎無法到達傳遞jsonString的web方法。

我有一個AJAX調用,它一個帖子:

$.ajax({ 
    type: "POST", 
    async: false, 
    global: false, 
    url: uri, 
    data: "{image:testit}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (data) { 
     json = data; 
    }, 
    error: function (err) { 
     console.log('Issue with ajaxPostCallForJson - err: ' + err); 
     reject('Issue with ajaxPostCallForJson - err: ' + err); 
    } 
    }); 

該網站的方法有:

[System.Web.Mvc.HttpPost] 
    public string updateAttachmentToServer() 
    { 
    string result = string.Empty; 
    return result; 
    } 

    [System.Web.Mvc.HttpPost] 
    public string updateAttachmentToServer(string jsonStringWorkIssues) 
    { 
    string result = string.Empty; 
    return result; 
    } 

我的路線是:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "ActionApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

它去的方法沒有參數,但沒有參數,即使我的路由有一個參數。

我錯過了什麼嗎?

謝謝。

OK,

我改變路由以下,這樣的參數名稱路由和Ajax調用匹配:

[System.Web.Mvc.HttpPost] 
    public string updateAttachmentToServer(string image) 
    { 
    string result = string.Empty; 
    return result; 
    } 

我添加了一個新的路由處理新形象的名字:

 config.Routes.MapHttpRoute(
      name: "ActionApi2",         // Route name 
      routeTemplate: "api/{controller}/{action}/{image}",  // URL w/ params 
      defaults: new { image = RouteParameter.Optional } // Param defaults 
     ); 

AJAX調用改爲:

$.ajax({ 
    type: "POST", 
    async: false, 
    global: false, 
    url: uri, 
    data: { image: '10'},  //"{ modelCode:\"" + $(this).attr('data-model') + "\", vdcCode:\"" + $(this).attr("data-vdc") + "\" }", 
    dataType: "json", 
    success: function (data) { 
     json = data; 
    }, 
    error: function (err) { 
     console.log('Issue with ajaxPostCallForJson - err: ' + err); 
     reject('Issue with ajaxPostCallForJson - err: ' + err); 
    } 
    }); 

但它仍然是第一種方法 - 沒有參數的方法。

回答

2
data: "{image:testit}", 

應該

data: {image:testit}, 
+0

我試過了,它仍然沒有參數的方法。我嘗試將參數名稱更改爲「圖像」,以查看這是否是問題,但事實並非如此。我也嘗試刪除「contenttype」這一行,因爲我將它看作是另一個問題的一個問題。 – tshad

+0

我做了如上所示的一些改變,但它仍然沒有通過任何參數。 – tshad

0

1)數據類型: 「JSON」,//它的平均服務器返回的數據類型

[System.Web.Mvc.HttpPost] 
public string updateAttachmentToServer(string image) 
{ 
    string result = string.Empty; 
    return result; 
    // here return should be json , instead of string 
} 

2)製作的WebAPI的確認網址

3)contentType:「application/json; charset = utf-8」,其平均數據類型發送到服務器,首先將數據更改爲json然後發送到服務器

data: JSON.stringify({ image: '10'}), 
+0

我試過JSON.stringify,但它仍然沒有去參數的那個。 – tshad

+0

使用默認的api配置設置進行檢查..不需要更改路由 –

+0

您使用的是MVC或WebApi? –