如何将Ajax参数中的Array值从客户端传递到服务器端

时间:2017-08-11 07:46:58

标签: javascript jquery asp.net-mvc-4 asp.net-ajax

$('#SendEmail').click(function () {
         var sel = $('input[type=checkbox]:checked').map(function (_, el) {
             return $(el).val();
         }).get();

         alert(sel);
         SetCompanyDetailsPopUp(sel);
     })

我在forloop中有多个复选框,Iam在Onclick函数“SendEmail”中获取值,并且还调用了Ajax方法,Ajax方法“SetCompanyDetailsPopUp”也正常工作,但服务器端的参数显示为“null”< / p>

function SetCompanyDetailsPopUp(Email) {

         debugger;
         $.ajax({
             type: "POST",
             async: false,
             dataType: "json",
             url: "/CRMLogin/GeneratePass",
             data: { "id": Value },
             success: function (result) {
                 var data = '';

                 alert(result);
                 //alert(result);
                 //alert('sucessfully generated');
             }
         });
     }  
调试Ajax函数后的

“Email”参数中的值为

阵列(2) 0: “1” 1: “2” 长度:2 的 : 阵列(0)

服务器端方法

public ActionResult GeneratePass(string id)
{
   string[] arr = id.Split(','); ; // Initialize.

   // Loop over strings.
   foreach (string s in arr)
   {
       forgotPassword(s);
   }

    return Json(arr, JsonRequestBehavior.AllowGet);
 }

2 个答案:

答案 0 :(得分:0)

从我的角度来看问题是你没有 在Post方法中需要的控制器方法中的[FromBody]属性 请检查以下链接: https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

所以代码看起来应该是这样的:

[HttpPost]
public ActionResult GeneratePass([FromBody] string id)
    {
        string[] arr = id.Split(','); ; // Initialize.

    // Loop over strings.
    foreach (string s in arr)
    {
        forgotPassword(s);
    }


    return Json(arr, JsonRequestBehavior.AllowGet);
    }

答案 1 :(得分:-1)

使用此

更改您的ajax代码
     function SetCompanyDetailsPopUp(Email) {
     var Value = Email.value;
     debugger;
     $.ajax({
         type: "POST",
         async: false,
         dataType: "json",
         url: "/CRMLogin/GeneratePass",
         data:'{ id:" '+ Value + ' "}',             // May be i am right, Here is problem
         success: function (result) {
             var data = '';

             alert(result);
             //alert(result);
             //alert('sucessfully generated');
         }
     });
 }