如何使用Javascript向.NetCore服务器创建帖子

时间:2019-03-27 15:48:10

标签: javascript asp.net-core-webapi

关于邮递员,我可以将数据发送到服务器,并且这些数据也会被接收。 就是邮递员Json,

{
    "sender":"ingo@ingo.de",
    "message":"Postman"
}

当我使用Javascript执行代码时,与服务器无关。

 "use strict";
function handleSubmit() {
    let sendObject = new Object();
    sendObject.sender =  $('#EmailAddress').val();
    sendObject.message = $('#message').val();
    var data = JSON.stringify(sendObject);
    try {
       let xhr = new XMLHttpRequest();
       let url = "https://myurl/api/home/externalEmail";
       xhr.open("POST", url, true);
       xhr.setRequestHeader("Content-Type", "application/json");
       xhr.send(data);
     } catch(err) {
        alert('Error=' + err);
     }
}

当我在警报中显示数据时,它看起来像这样

{
   "sender":"ingo@ingo.de",
   "message":"Test Homepage"
}

那时候我会错了。

2 个答案:

答案 0 :(得分:0)

在操作参数上使用[FromBody]

[HttpPost]
public async Task<IActionResult> Index([FromBody] MyModel model)

答案 1 :(得分:0)

如果您已经在使用jQuery,那么您的要求不限于使用jQuery。最好使用jQuery方法进行API调用,因为它还会解决跨浏览器的兼容性问题。

这里是一个例子。

// this is the id of the form
$("#idForm").submit(function(e) {

    e.preventDefault(); // avoid to execute the actual submit of the form.

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: form.serialize(), // serializes the form's elements.
           success: function(data)
           {
               alert(data); // show response from the php script.
           }
         });
});

顺便说一下,这就是jquery调用后实现的AJAX调用看起来像您可以使用它的方式。

function postAjax(url, data, success) {
        var params = typeof data == 'string' ? data : Object.keys(data).map(
                function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) }
            ).join('&');

        var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        xhr.open('POST', url);
        xhr.onreadystatechange = function() {
            if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); }
        };
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send(params);
        return xhr;
    }

    // example request
    postAjax('http://foo.bar/', 'p1=1&p2=Hello+World', function(data){ console.log(data); });

    // example request with data object
    postAjax('http://foo.bar/', { p1: 1, p2: 'Hello World' }, function(data){ console.log(data); });

如有任何查询,请给我