Javascript jQuery发布到ASP.NET核心控制器时出现问题

Javascript jQuery发布到ASP.NET核心控制器时出现问题,javascript,jquery,asp.net-core,.net-core,asp.net-core-mvc,Javascript,Jquery,Asp.net Core,.net Core,Asp.net Core Mvc,我在stackoverflow上经历了这个问题,但我无法解决我的问题 在HomeController中,我有一个名为Audit的方法,我想通过jQuery从/Home/Index页面的脚本发布该方法。控制器看起来像: public class HomeController : Controller { [HttpPost] [ValidateAntiForgeryToken] public JsonResult Audit([FromBody] JObject jObject)

我在stackoverflow上经历了这个问题,但我无法解决我的问题

HomeController中,我有一个名为Audit的方法,我想通过jQuery从/Home/Index页面的脚本发布该方法。控制器看起来像:

public class HomeController : Controller
{
  [HttpPost]
  [ValidateAntiForgeryToken]

  public JsonResult Audit([FromBody] JObject jObject)
  {
       if (jObject != null)
       {
           return Json("success");
       }
       return Json("failed");
  }
}
在/Home/Index页面的javascript文件中,我尝试以如下方式将JSON对象发布到该审计中:

var auditData = {};
$(document).ready(function(){
    var request = $.getJSON('http://www.geoplugin.net/json.gp', function (responseData, status) {
        auditData = {
            Latitude : responseData.geoplugin_latitude,
            Longitude : responseData.geoplugin_longitude
        };

        $.post('Audit', auditData, function (response) {
            console.log(response);
        });
    });
});

我希望auditData对象在/Home/Audit中作为JObject发布,但出现了一些问题。我认为控制器或$方法中存在问题。如何解决此问题?

您的帖子URL错误,您需要将要发回的数据命名为
jObject
,以匹配您在控制器中定义的内容

$.post('@Url.Action(“审计”,“主页”,新的{area=”“})”,{jObject:auditData},
功能(响应){
控制台日志(响应);
});

当前代码中存在多个问题,请逐一检查以下要点:

  • 根据Rory的建议,您的请求url是错误的,应该是
    Home/Audit
  • 如果您在没有antitoken的情况下发布请求,则应删除
    [ValidateAntiForgeryToken]
  • 您应该使用json而不是表单数据发布请求数据
  • 代码:

    客户

    @section Scripts{
        <script type="text/javascript">
            var auditData = {};
            $(document).ready(function(){
                    auditData = {
                        Latitude : "l1",
                        Longitude : "l2"
                    };
                $.ajax({
                    type: 'POST',
                    url: 'Home/Audit',
                    data: JSON.stringify(auditData),
                    success: function(data) { alert('data: ' + data); },
                    contentType: "application/json"
                });
            });
        </script>
    }
    

    您是否调试了请求以查看错误是什么?我可以看出您没有传递防伪令牌,因此该属性将导致问题(如果没有)else@RoryMcCrossan调试说明:加载资源失败:服务器响应状态为404(未找到)。这是您的第一个问题。
    “审核”
    路径无效。我建议试试
    '/Home/Audit'
    public class HomeController : Controller
    {
        [HttpPost]
        //[ValidateAntiForgeryToken]
    
        public JsonResult Audit([FromBody]JObject jObject)
        {
            if (jObject != null)
            {
                return Json("success");
            }
            return Json("failed");
        }
    }