簡體   English   中英

數據從 AJAX 調用傳遞到 Controller 但得到 null 值

[英]Data pass from AJAX call to Controller but getting null values

From below code i want to send data to my controller but when i add debug point to my controller function then receiving all the values null. 我不替換數據類型是 json 的文本。

jQuery.ajax({
            url: "../VisitorEntry/SaveVisitorEntry",
            type: "POST",
            //data: "{visitpurpose:'" + visitpurpose + "'}",
            data: {
                visitpurpose: visitpurpose,
                txt_visitor_name: txt_visitor_name,
                txt_company_name: txt_company_name,
                txt_emp_name: txt_emp_name,
                txt_phone: txt_phone,
                txt_designation: txt_designation,
                txt_address: txt_address,
                txt_country_name: txt_country_name,
                txt_state_name: txt_state_name,
                txt_city_name: txt_city_name
            },
            dataType: "text",
            traditional: true,
            //contentType: "application/json; charset=utf-8",
            processData: false,
            success: function (response) {

                debugger
                jQuery("#wait").css("display", "none");
                
                QrCodeImage.setAttribute('src', "data:image/jpg;base64," + response);

            },
            error: function (response) {
                debugger
                jQuery("#wait").css("display", "none");
                console.log(response.responseText);
            }
        });

下面是我在 controller 上的 function ,我想接收所有值,但接收 null。

[HttpPost]
        public ActionResult SaveVisitorEntry(string visitpurpose, string txt_visitor_name, string txt_company_name, string txt_emp_name, string txt_phone,
            string txt_designation, string txt_address, string txt_country_name, string txt_state_name, string txt_city_name, string txt_emp_number)
        {
            VisitorEntryDA pdm = new VisitorEntryDA();
            DataSet dataSet = new DataSet();
            Bitmap qrCodeImage = null;
            dataSet = pdm.visitorEntry(visitpurpose, txt_visitor_name, txt_company_name, txt_emp_name, txt_phone,
                txt_designation, txt_address, txt_country_name, txt_state_name, txt_city_name, txt_emp_number);
            
            for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
            {
                string iserror = dataSet.Tables[0].Rows[i]["iserror"].ToString();
                string message = dataSet.Tables[0].Rows[i]["message"].ToString();
                string id = dataSet.Tables[0].Rows[i]["visitor_id"].ToString();
                QRCodeGenerator qrGenerator = new QRCodeGenerator();
                //var data = { "visitpurpose":visitpurpose};
                QRCodeData qrCodeData = qrGenerator.CreateQrCode(id, QRCodeGenerator.ECCLevel.Q);
                QRCode qrCode = new QRCode(qrCodeData);
                qrCodeImage = qrCode.GetGraphic(20);
                ImageConverter converter = new ImageConverter();
            }
            
            return Content(Convert.ToBase64String(BitmapToBytes(qrCodeImage)));
        }

一方面,通過將 c# 中的參數列表更改為單個 class (在我的示例中,DTO 僅表示數據傳輸對象),讓您的生活更輕松:

public class VisitorDto 
{ 
    public string visitpurpose {get;set;} 
    public string txt_visitor_name {get;set;}  
    public string txt_company_name {get;set;} 
    public string txt_emp_name {get;set;} 
    public string txt_phone {get;set;} 
    public string txt_designation {get;set;} 
    public string txt_address {get;set;}  
    public string txt_country_name {get;set;}  
    public string txt_state_name {get;set;} 
    public string txt_city_name {get;set;} 
    public string txt_emp_number {get;set;} 
 }

並在您的方法中使用,例如:

public ActionResult SaveVisitorEntry(VisitorDTO model){
   ...
}

然后你也可以刪除 txt_ 的前綴,因為它有點麻煩,但我會留給你。

在那之后它可能會起作用。

由於在您的 Ajax class 中,您的Data:是 object ,因為您已將其聲明為Data: {}

{} - 是 javascript 中的 object 語法。 到達您的 controller 時它是 null 的原因很可能是因為您發送了 object 但 Z594C18AB03F2C6E04C 期待字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM