为什么我的 ajax 请求向服务器发送一个空对象

劳动节

我正在尝试使用 XMLHttpRequest 发出 ajax 请求......当 processRequest 方法被调用时,我的 MVC 操作被命中,但是对象属性值都是空的。

Ajax 类

import {Message} from "./Message";

export class AjaxHelper {

    private url: string;
    private data: Object;
    private callBackFunction: Function;

    constructor(url, data, callback) {
        this.url = url;
        this.data = data;
        this.callBackFunction = callback;
    }

    processRequest(): void {
        //var captcha = grecaptcha.getResponse();
        console.log("from ajax: " + this.data);
        const divOuterNotification = <HTMLDivElement>document.getElementById("divEmailMessage");

        var xhr = new XMLHttpRequest();
        xhr.open("POST", this.url, true);
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.onload = () => {
            if (xhr.status >= 200 && xhr.status <= 300) {
                this.callBackFunction(divOuterNotification, Message.enquirySent);
            } else {
                this.callBackFunction(divOuterNotification, Message.error);
            }
        }

        xhr.onerror = () => {
            this.callBackFunction(divOuterNotification, Message.error);
        }

        xhr.send(this.data);
    }

}

我如何调用我的 ajax 请求

var ajaxObj = new AjaxHelper("/Home/SendEmail", emailEnquiry, this.uiHelper.addNotification);
ajaxObj.processRequest();

MVC 动作方法

[HttpPost]
public IActionResult SendEmail(Enquiry emailEnquiry)
{
    return Json("worked");
}

下面是我的对象、客户端对象以及它在 C# 中应该是什么的等价物。

JS 对象

    var emailEnquiry = {
        SenderName: txtNameVal,
        SenderEmail: txtEmailVal,
        SenderTelephone: txtTelephoneVal,
        SenderEnquiry: txtEnquiryVal,
        CaptchaResponse: ""
    };

C# 对象

public class Enquiry
{
    [Required(AllowEmptyStrings = false)]
    public string SenderName { get; set; }
    [Required(AllowEmptyStrings = false)]
    public string SenderEmail { get; set; }
    public string SenderTelephone { get; set; }
    [Required(AllowEmptyStrings = false)]
    public string SenderEnquiry { get; set; }
    public string CaptchaResponse { get; set; }
}
没有

尝试FromBody参数前面属性:

[HttpPost]
public IActionResult SendEmail([FromBody] Enquiry emailEnquiry)
{
    return Json("worked");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我收到由ajax请求发送的空数据?

一个ajax放置请求后,接收对象属性在服务器上为空

为什么我的 ajax 向控制器发送空值?

Laravel:为什么我的Ajax请求返回“ 500(内部服务器错误)”?

为什么我的Ajax请求从wordpress返回空对象?

为什么我的ajax调用仅处理我发送到服务器的部分数据?

当我使用Ajax请求时,为什么无法从我的快速服务器上下载JSON文件?

通过AJAX或表单提交的HTTP请求。我应该选择哪一个?为什么?

为什么ajax一个接一个地发送请求

为什么我不能向服务器提交一个空文本框

我有一个表单验证器,我必须单击两次发送按钮才能将数据发送到ajax-为什么?

为什么我的Ajax请求总是抛出错误?

为什么我的AJAX请求打印出整个HTML代码?

为什么我从服务器的ajax调用中获得其他数据作为响应?

为什么Django使用`is_ajax()`看不到我的ajax请求作为ajax?

一个简单的AJAX JQuery示例给了我500个内部服务器错误

为什么React fetch()向服务器发送2个请求?

为什么通过 ajax 获取 php 时我得到一个文件 2 次?

为什么第一个AJAX调用会重置我的视图参数?

为什么我的 ajax 查询只保存最后一个值

为什么我可以通过正常的浏览器请求得到Ajax请求的响应?

服务器管理员向我发送了一个私钥供使用。为什么?

当我尝试使用MS AJAX PageMethods传递对象时,为什么我的参数为null

为什么我的Rails控制器回滚我的Ajax提交?

为什么ajax请求不发送?

什么是Matrox GPU?为什么我所在大学的UNIX服务器有一个?

我想知道为什么我用jquery ajax(django,jquery)发送一个数组来查看时发生错误

为什么Web服务器限制Ajax查询-DDoS?

为什么jquery的.ajax()方法不发送我的会话cookie?