2012-10-15 59 views
0

我有一個簡單的jquery ajax調用來更新輸入框中的數據。當我在輸入中有任何標記時,例如<div>它不會將它傳送給控制器。任何幫助,請我如何調用Ajax和保存在它在字符串中使用<>調用JQuery.Ajax

$.ajax({ 
    type:post, 
    url: "/dom/updatelement", 
    data: "name="+name+&id="+id 
}); 

name可能包含標記有HTML代碼標記數據庫texxt。

+2

如果您有語法高亮顯示,您應該立即在您的代碼中看到語法錯誤... – ThiefMaster

回答

5

下面是一個POST請求發送數據的正確方法:

$.ajax({ 
    type: 'post', 
    url: '/dom/updatelement', 
    data: { name: name, id: id } 
}); 

jQuery將確保以正確的URL編碼數據使用此語法時。

你當然可以有可能通過手使用encodeURIComponent方法做到了這一點:

$.ajax({ 
    type: 'post', 
    url: '/dom/updatelement', 
    data: 'name=' + encodeURIComponent(name) + '&id=' + encodeURIComponent(id) 
}); 

但說實話第一種方法似乎有點更具可讀性和優選。

+0

謝謝,對不起,仍在掙扎。只要我把<放在文本中,它就不會去控制器。嘗試使用encodeURIComponent,仍然沒有去控制器。 – user1724268

+0

這是一個ASP.NET應用程序嗎? ASP.NET會自動阻止包含這些字符的請求。例如,在ASP.NET MVC中,您可以使用'[ValidateInput(false)]'屬性來修飾相應的控制器操作以禁用此行爲。 –

1

首先,你應該做出正確的Ajax調用:

$.ajax({ 
    type: "POST", 
    url: "/dom/updatelement", 
    data: { 
     name: name, 
     id: id 
    } 
}); 

接下來,你可以在使用特殊功能(例如,在PHP htmlspecialchars())控制器部分轉換的字符,如<>

+0

對不起,不使用PHP,使用ASP.NET MVC 4,所以不能嘗試特殊字符。只要我添加一個<不會去控制器。 – user1724268

相關問題