【问题标题】:Passing localstorage to controller using Ajax使用 Ajax 将本地存储传递给控制器
【发布时间】:2015-06-05 15:10:21
【问题描述】:

我需要访问服务器端本地存储中保存的数据,但这是另一回事。

我的视图中有这个按钮:

<div style="float:right;">
    <input id="btnTest" type="button" name="test Json Button" value="test Json Button" onclick="sendLocalStorage();" class="btn btn-default" />
</div>

这个JS函数:

function sendLocalStorage() {

    var JsonLocalStorageObj = JSON.stringify(localStorage);
    //var test = ["test1", "test2", "test3"];

    $.ajax({
        url: "/MyControllersName/Test",
        type: "POST",
        dataType: 'json',
        data: JsonLocalStorageObj,
        contentType: "application/json; charset=utf-8",
        beforeSend: function () { alert('sending') },
        success: function (result) {
            alert(result.Result);
            localStorage.clear();
        }
    });
};

还有这个测试控制器方法:

    [HttpPost]
    [WebMethod]
    public ActionResult Test(string JsonLocalStorageObj)
    {
        string x = JsonLocalStorageObj;
        //deserialize here
        return RedirectToAction("Index");
    }

当我在 chrome 开发工具中运行 JSON.stringify(localStorage); 时,我看到了预期的数据,但是当我调试我的控制器时,JsonLocalStorageObj 始终是 null。作为测试,我使用了被注释掉的测试数组并将控制器上的参数设置为接受List&lt;string&gt;,这是通过填充来实现的。

JSON.stringify(localStorage); 被传递有什么问题?

【问题讨论】:

    标签: javascript ajax asp.net-mvc


    【解决方案1】:

    您没有指定操作的参数名称(JsonLocalStorageObj),并且您的内容和数据类型也错误。 尝试将您的 javascript 代码更改为:

    function sendLocalStorage() {
    
        var JsonLocalStorageObj = JSON.stringify(localStorage);
        //var test = ["test1", "test2", "test3"];
    
        $.ajax({
            url: "/MyControllersName/Test",
            type: "POST",
            data: { JsonLocalStorageObj: JsonLocalStorageObj },
            success: function (result) {
                alert(result);
            }
        });
    }
    

    【讨论】:

    • 只是一个旁注,我不需要对 localStorage 进行字符串化,因为它已经是 JSON 格式,后来才意识到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2014-12-08
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多