[英]How to send a JSON stringified javaScript object to the server
我正在使用VB.Net和MVC5。我有一个用javaScript创建的对象,如下所示:
var myEdits = {
listOfIDs: [],
listOfValues : []
};
我需要将该对象发送到控制器,并使用其包含的信息移至下一个视图。
我可以成功地对对象进行字符串化,并通过ajax将其传递给控制器,并处理数据,但这不允许我在成功时呈现新视图。
我试图像这样使用window.location
和endodeURIComponent
:
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.