数据从 AJAX 调用传递到控制器但获取空值

Posted

技术标签:

【中文标题】数据从 AJAX 调用传递到控制器但获取空值【英文标题】:Data pass from AJAX call to Controller but getting null values 【发布时间】:2021-08-23 20:04:06 【问题描述】:

从下面的代码中,我想将数据发送到我的控制器,但是当我将调试点添加到我的控制器函数时,然后接收到所有值 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);
            
        );

以下是我在控制器上的功能,我想接收所有值但接收 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)));
        

【问题讨论】:

【参考方案1】:

首先,通过将 c# 中的参数列表更改为单个类(在我的示例中,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 类中,您的 Data: 是一个对象,正如您所声明的那样 Data: .

- 是 javascript 中的对象语法。到达控制器时它为 null 的原因很可能是因为您发送了一个对象,但控制器期待字符串。

【讨论】:

感谢@Topher 的回复,但我仍然在控制器上的 DTO 中得到空值 对不起,我犯了一个错误。现在我正在获取数据。谢谢 没问题很高兴我能帮忙

以上是关于数据从 AJAX 调用传递到控制器但获取空值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AJAX 将数据从视图传递到控制器

将数组从ajax调用传递给控制器​​,控制器中的数组为空

如何将多个参数从 ajax 调用传递到 MVC 控制器

使用 Ajax 将数据从视图传递到控制器

laravel,从输入到控制器功能的ajax调用500错误

如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器