将数据从javaScript传递到MVC控制器视图ajax

时间:2016-10-11 21:02:16

标签: javascript asp.net-mvc

这很奇怪,我不知道为什么这不起作用,无论我做什么,我总是最终收到动作方法参数的null。为什么这不起作用?

<input type="button" value="Save" onclick="SaveDocument()"  />

       function SaveDocument() {
            
         var data = "sss";

            $.ajax({
                url: "/Home/Save",
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(data),
                success: function (mydata) {
                    alert("Saved");
                },
                error: function(error)
                {
                    alert('failed');
                    alert(error);
                }
            });
          
        }
    
    </script>

    [HttpPost]
    public ActionResult Save(string data)
    {
        return null;
    }

3 个答案:

答案 0 :(得分:2)

我在本地创建了相同的测试代码。我得到的是null。您可以尝试使用以下代码。它对我有用。

function SaveDocument() {          
        $.ajax({
            url: "/Home/Save",
            type: "POST",               
            data: {"data" : "sss"},
            success: function (mydata) {
                alert("Saved");
            },
            error: function(error)
            {
                alert('failed');
                alert(error);
            }
        });
    }

答案 1 :(得分:0)

您应该将js对象(键值对)传递给JSON.stringify方法,以便通过ajax调用发送字符串化的数据版本。键/对象属性名称应与操作方法参数名称匹配。

以下内容应该有效。

data: JSON.stringify({ data:"some string"}),
contentType: "application/json; charset=utf-8",

您可能还想在js方法中考虑return false;,以便正常的表单提交不会发生。

此外,由于您的服务器操作方法正在返回null,因此您不应指定&#34; json&#34;作为&#34; dataType&#34;你的ajax调用的属性值。只需从您的ajax调用中删除该行。

您可以从操作方法中返回一些有效的json数据,而不是null

[HttpPost]
public ActionResult Save(string data)
{
  return Json(data);
}

答案 2 :(得分:0)

将操作参数名称更改为其他有意义的名称。 data是jQuery中的保留关键字。

Individual