簡體   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