2017-04-24 57 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? –