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

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

我在for循環多個複選框,並蔭越來越善於ONCLICK功能「SendEmail」的值,並調用Ajax的方法,Ajax的方法「SetCompanyDetailsPopUp 「也工作正常,但參數在服務器側被示出‘電子郵件’調試Ajax的功能。在該值之後如何在阿賈克斯參數從客戶端傳遞數組值服務器端

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'); 
      } 
     }); 
    } 

‘空’參數是

陣列(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); 
} 
+0

是'警報(SEL);'給你逗號分隔值電子郵件??? –

+0

是用逗號隔開,我想這就是它沒有取值的原因 – Dinup

+0

如果它已經有逗號分隔值,那麼將'{「id」:Value}'改爲'{「id」:Email} ' –

回答

0

更改與此

 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'); 
     } 
    }); 
} 
+0

當我把這個代碼,我得到+值+值在Serverside, – Dinup

+0

複選框的確切值 – Dinup

+0

'var Value = Email.value;'這裏'價值'沒有從'Email.value'獲得電子郵件值 – Blue

0

從我的角度來看這個問題你的Ajax代碼是您的控制器方法中沒有 [FromBody]屬性,在Post方法 中需要,請檢查t他以下鏈接: 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); 
    } 
+0

我得到的價值當我通過varchar在客戶端,但是當數值在數組中我沒有得到價值在客戶端 – Dinup

+0

有無論如何,我們可以將數組值傳遞給Ajax參數 – Dinup

+0

如果您嘗試傳遞字符串[]或者另一種方式是傳遞串聯的字符串 –

0

您需要添加「傳統:真正的」 「AJAX選項數組後回收集

function SetCompanyDetailsPopUp(Email) { 

    debugger; 
    $.ajax({ 
     type: "POST", 
     async: false, 
     dataType: "json", 
     url: "/CRMLogin/GeneratePass", 
     data: { "id": Email}, 
     traditional: true,  //Need to Add This 
     success: function (result) { 
      var data = ''; 

      alert(result); 

     } 
    }); 
} 
0

您不會將屬性[httppost]賦予該方法。但是你的ajax是post類型的。以下是可按預期工作的代碼示例。

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

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

然後ActionMethod

[HttpPost] 
public ActionResult GeneratePass(string[] Id) 
{ 
    return View(); 
} 

enter image description here

相關問題