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

时间:2015-08-19 19:23:33

标签: javascript json asp.net-mvc vb.net

我正在使用VB.Net和MVC 5.我有一个用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将此对象传递给控制器​​的正确方法是什么,让服务器呈现新视图?

3 个答案:

答案 0 :(得分:1)

它正在进行URL编码,因为您正在使用HTTP GET。如果你发送了很多这样的信息,你可能想要使用HTTP POST。请参阅jQuery的$ .ajax方法。

如果您真的想继续使用GET,请放心,如果您的操作采用字符串参数,它将与冒号一起按预期进行。 :已编码为%3A(请参阅:http://www.w3schools.com/tags/ref_urlencode.asp了解所有这些内容)。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

模型类

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

Javascript Part(假设是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);
}