我正在开发.NET 4.0 MVC项目。我正在尝试向Ajax发布我的KO模型中的一段数据。该数据是以下XML格式的字符串。无法以XML格式发布Ajax post knockout(KO)数据
<SearchCriteria><Criteria SearchOn="Name" SearchValue="test 3" /></SearchCriteria>
我想要这样发布。
$.ajax({
url: destUrl,
data: ko.toJSON(DataToPost()),
type: "POST",
success: function (result) {
// I am doing my stuff here.
}
},
error: function (request, textStatus, errorThrown) {
alert(request.statusText);
}
});
在这里你会注意到发送的数据是"ko.toJSON(DataToPost())"
。 DataToPost()
返回我的KO model
数据成员DataToPost
中包含的XML
字符串。 ko.toJSON()
用于转换JSON
中的KO model
数据。
当我们发布任何包含javascript
或html
标签的东西时,会抛出运行时异常,通常是thrown
。这是.NET
的安全功能。以下是例外情况。
A potentially dangerous Request.Form value was detected from the client.
<SearchCriteria><Criteria SearchOn="...est 3\" /></SearchCriteria>
我有时也面临类似情况反馈(虽然我没有使用KO
那个时候,这是正常的职务即非Ajax
)。我通过使用javascript
escape()
克服了那个时间的问题,但是这次它是failed
。我用它如下
$.ajax({
url: destUrl,
**data: ko.toJSON(escape(SearchCriteria()))**,
type: "POST",
success: function (result) {
// I am doing my stuff here.
}
},
error: function (request, textStatus, errorThrown) {
alert(request.statusText);
}
});
其他流行的修补程序是在页面级别或在应用程序级别禁用此安全性。它可以按如下方式完成。
页面级别。
<%@ Page validateRequest="false" %>
应用程序级别。
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
但废除这个治安不好。我不认为这将是一个明智的举措。现在我不知道该怎么做。需要建议。
在此先感谢!
感谢您的回复。我也想这样做,但这会像安全妥协。我不舒服。所以我宁愿去采取不同的方法。检查我对问题的回复。 – Aum