【问题标题】:Pass parameters via ajax call in GET method using jquery使用jquery在GET方法中通过ajax调用传递参数
【发布时间】:2018-09-28 09:14:22
【问题描述】:

我已尝试检索具有特定项目详细信息的数据。所以我需要在 GET 方法中使用 ajax 调用来传递特定的项目 ID。请在下面找到我尝试过的代码,

C#:

[HttpGet]
[Route("matter")]
public List<MatterLookup> LookupValuesForMatter(ClientDetails data)
{

}

public class ClientDetails
{
    public string ClientId { get; set; }
}

阿贾克斯:

var clientId = $("#client").val();
var data =
    {
        clientId: clientId,
    }
$.ajax({
   type: "GET",
   url: "matter",
   data: data,
   success: function (response) {
               if (response != null) {
               }
   }
});

当我尝试传递参数时,收到的是 null 而不是特定的列表 ID。实际上我已经使用 POST 方法完成了,但我需要使用 GET 方法。

如果您有任何想法,请提出建议,

谢谢。

【问题讨论】:

  • 你所有的传递都是clientId的值,因此你的GET方法应该是public List&lt;MatterLookup&gt; LookupValuesForMatter(string clientId)
  • 使用现有参数,您将需要 [FromUri] 属性
  • 我实际上是在尝试使用 GET 方法而不是单个值来传递值列表。
  • 什么“清单”?你的模特当然不接受List&lt;T&gt;。在您看来,clientId 的价值是什么?是来自&lt;select multiple&gt; 吗?您需要在问题中解释问题。
  • 我不会尝试通过 List。实际上模型将有多个变量。所以我问的问题是简单的代码。

标签: jquery ajax asp.net-mvc asp.net-web-api get


【解决方案1】:

默认情况下,web-api 会绑定 body 中的复杂对象。由于您制作的是 GET,并且没有正文,因此您需要添加 [FromUri] 属性,以便您的模型的属性与查询字符串值绑定。

[HttpGet]
[Route("matter")]
public List<MatterLookup> LookupValuesForMatter([FromUri]ClientDetails data)

或者,为您在请求中传递的每个名称/值对添加一个参数

[HttpGet]
[Route("matter")]
public List<MatterLookup> LookupValuesForMatter(string clientId, .... ) // add simple type parameters as required

【讨论】:

  • 所以如果我们添加正文,它将通过 url 作为查询字符串,对吗?
  • @EhsanSajjad,抱歉,我不确定我是否理解您的评论。 GET 没有正文 - 名称/值对在查询字符串(或路由值)中发送,与发布表单相反,名称/值对在正文中发送。
  • 我的意思是虽然我们添加了正文,但它会作为 get 的查询字符串?
  • @EhsanSajjad,当您将 data: xxxtype: "Get" 一起使用时,这些值将被转换为查询字符串 - 它不会添加到正文中(但如果它是 type: "Post",它将被添加到请求的正文)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多