[英]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.