为了账号安全,请及时绑定邮箱和手机立即绑定

AJAX 发布到 ASP.NET MVC 控制器操作方法 - 空参数

AJAX 发布到 ASP.NET MVC 控制器操作方法 - 空参数

C#
largeQ 2021-12-05 16:58:38
我想用 AJAX 将带有一些数据的字符串数组发布到我的控制器。它只是纯文本,我的控制器总是收到一个空参数。我知道我不应该字符串化,因为我不使用模型或视图模型。我搜索了其他问题,但大多数是指表单并使用视图模型属性。这是我的代码:控制器[HttpPost]public ActionResult FirstAjax(string[] listValues){    //TODO    return Json("Reached the controller", JsonRequestBehavior.AllowGet);}我添加了 JSON 返回来检查我是否真的点击了控制器,并在我的视图中收到了消息。AJAX POSTvar listValues = [];listElements.each(function (index, element) {    listValues.push(element.innerText);});var serviceURL = '/Products/FirstAjax';$.ajax({    type: "POST",    url: serviceURL,    data: listValues,    success: successFunc,    error: errorFunc});function successFunc(data, status) {    alert(data);}function errorFunc() {    alert('error');}由于我的列表可以通过拖放进行排序,因此在单击按钮时按顺序listValues填充<li>项目的文本值。看法<div class="demo">  <ul id="sortable">    <li class="ui-state-default">Cat</li>    <li class="ui-state-default">Dog</li>    <li class="ui-state-default">Tiger</li>  </ul>  <button type="button" onclick="display_array();">Ajax Post!</button></div><!-- End demo -->
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

编写您的 Ajax POST 方法如下:


$(document).ready(function(){


    var listValues = [];

    listElements.each(function (index, element) {

          listValues.push(element.innerText);

    });


    var serviceURL = '/Products/FirstAjax';


    $.ajax({

       type: "POST",

       url: serviceURL,

       data: {listValues: listValues},

       contentType: 'application/json'

       success: successFunc,

       error: errorFunc

    });


    function successFunc(data, status) {

       alert(data);

    }


    function errorFunc() {

       alert('error');

    }

});

希望这能解决您的问题。


查看完整回答
反对 回复 2021-12-05
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您需要contentTypeasapplication/json和 useJSON.stringify将 JavaScript 对象转换为 JSON 字符串。


$.ajax({

    type: "POST",

    contentType: "application/json; charset=utf-8",

    url: serviceURL,

    data: JSON.stringify({ listValues: listValues}),

    success: successFunc,

    error: errorFunc

});


查看完整回答
反对 回复 2021-12-05
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

将您的 ajax 选项更改为:


$.ajax({

    ...

    data: {listValues: listValues},

    ...

});

原因是:服务器期望发布的对象/查询字符串与参数命名相同。将data被转换为listValues=...&otherParams=...在查询字符串。如果您在未指定参数名称的情况下发布数组,则 JQuery 无法正确映射它们


查看完整回答
反对 回复 2021-12-05
  • 3 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信