繁体   English   中英

如何将JSON字符串化的JavaScript对象发送到服务器

[英]How to send a JSON stringified javaScript object to the server

我正在使用VB.Net和MVC5。我有一个用javaScript创建的对象,如下所示:

        var myEdits = {
            listOfIDs: [],
            listOfValues : []
        };

我需要将该对象发送到控制器,并使用其包含的信息移至下一个视图。

我可以成功地对对象进行字符串化,并通过ajax将其传递给控制器​​,并处理数据,但这不允许我在成功时呈现新视图。

我试图像这样使用window.locationendodeURIComponent

            myEdits = encodeURIComponent(JSON.stringify(myEdits));

            var postString = ("/ViewDetails/EditConfirmation/" + myEdits);

            window.location = postString;

但是我仍然收到此错误:

从客户端(:)检测到潜在的危险Request.Path值。

我觉得很奇怪,因为在请求中看不到任何::

EditConfirmation /%7B “listOfIDs” %3A%5B “22” %2C “23” %2C “24” %2C “25” %2C “26” %2C “27” %2C “28” %2C “29” % 2C “30” %2C “31” %2C “32” %2C “33” %2C “34” %2C “35” %2C “36” %5D%2C “listOfValues” %3A%5B “” %2C” “%2C”, “%2C”, “%2C”, “%2C”, “%2C”, “%2C”, “%2C”, “%2C”, “%2C” 是 “%2C” 是 “%2C” 是“%2C “是的” %2C “否” %5D%7D

通过javaScript或jQuery将此对象传递给控制器​​,并使服务器呈现新视图的正确方法是什么?

由于您使用的是HTTP GET,因此正在对URL进行编码。 如果您要发送大量这样的信息,则可能要使用HTTP POST。 参见jQuery的$ .ajax方法。

如果您确实想继续使用GET,请放心,如果您的操作采用了字符串参数,则冒号将按预期通过。 :已被编码为%3A (有关全部信息,请参见: http//www.w3schools.com/tags/ref_urlencode.asp )。

我通过使用AJAX调用将JSON字符串放入会话变量中,然后使用window.location调用操作以获取success的正确视图来解决此问题。 然后,当调用“成功”操作为视图设置模型时,我从会话中检索字符串。

可能由于尝试将URL路径'/ViewDetails/EditConfirmation/' + myEdits注入浏览器而出现了危险的请求问题。

型号类别

public class myEdits
{
    public List<int> listOfIds {get;set;}
    public List<string> listOfValues {get;set;}
}

Javascript部分(假设jQuery)-发送yor myEdits对象

$.ajax({
  type: "POST",
  url: 'Home/MyMethod',
  data: myEdits,
  success: success,
  dataType: dataType
});

HomeController的

public void MyMethod(myEdits edits)
{
    return View("/ViewDetails/EditConfirmation/", edits);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM