将字符串从jQuery传递到C#MVC

本文关键字:C#MVC jQuery 字符串 | 更新日期: 2023-09-27 18:27:52

我在Web MVC中将字符串值从jQuery传递到C#时遇到问题。

这是我的jQuery代码:

$.ajax({
    type: 'POST',
    url: '/Account/ChangePhoneNumber',
    contentType: "application/json; charset=utf-8",
    data: newPhone,
    dataType: 'json',
    success: function (result) {
        alert("We returned: " + result);
    }
})

这是我的C#方法:

[HttpPost]
public ActionResult ChangePhoneNumber(string data)
{                            
    return View();
}

调试data时,参数始终为空。我做错了什么?

将字符串从jQuery传递到C#MVC

好的,我已经发现问题所在:

 $.ajax({
                                type: 'POST',
                                url: '/Account/ChangePhoneNumber',
                                contentType: "application/json; charset=utf-8",
                                data: JSON.stringify({data: newPhone}),
                                dataType: 'json',
                                success: function (result) {
                                    alert("We returned: " + result);
                                }
                            })

我必须添加数据:JSON.stringfy({data:newPhone}),

你差不多到了;

$.ajax({
        type: 'POST',
        url: '/Account/ChangePhoneNumber',
        contentType: "application/json; charset=utf-8",
        data: {data: newPhone, foo: bar, fooz: barz},   //<-- mind the array here
        dataType: 'json',
        success: function (result) {
                     alert("We returned: " + result);
                  }
        })

这将导致以下结果;

[HttpPost]
public ActionResult ChangePhoneNumber(string data, string foo, string fooz)
{ 
    //data will contain newPhone
    //foo will contain bar
    //fooz will contain barz                           
    return View();
}

只需确保将对象放在一个数组中即可。所以,在你的情况下:

data: {data: newPhone},

会解决你的问题。

您在ajax调用中没有正确传递data。你需要像这样通过data: {data: newPhone},

 $.ajax({
            type: 'POST',
            url: '/Account/ChangePhoneNumber',
            contentType: "application/json; charset=utf-8",
            data: {data: newPhone},
            dataType: 'json',
            success: function (result) {
                 alert("We returned: " + result);
            }
        })
 [HttpPost]
 public ActionResult ChangePhoneNumber(string data)
 {                            
      return View();
 }

您需要将数据作为表单对象发布;一些有用的信息可以在这里找到

                 $.ajax({
                            type: 'POST',
                            url: '/Account/ChangePhoneNumber',
                            contentType: "application/json; charset=utf-8",
                            data: {data: newPhone},
                            dataType: 'json',
                            success: function (result) {
                                alert("We returned: " + result);
                            }
                        })

检查您是如何定义路由的。

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{data}",
                defaults: new { controller = "yourcontroller", action = "actionname", data = UrlParameter.Optional }
            );

请检查路线中的参数名称是否为"data"

如果您不担心AJAX/JSON,您可以简单地使用$.Post方法。

var url = "@Url.Action("ChangePhoneNumber", "Account")";
        $.post(url, { data: newPhone })
            .fail(function() {
                // do something
            })
            .done(function(result) {
                alert("We returned: " + result);
            });