我有一个要求,我需要将div标签的所有HTML传递给控制器。 我可以获取HTML,但是当我通过Ajax传递HTML时,代码失败。
这是我的代码。
查看:
function abc() {
var html = $("#div").html();
data = {
Html: html
};
$.ajax({
url: '@Url.Action("DisplayResult", "Default")', //
data: data,
type: "POST",
contentType: "application/json; charset=utf-8",
success: function(result) {
//do something
});
},
error: function(xhr) {
alert("error");
}
});
}
我的控制器的操作方法:
[HttpPost]
public FileResult DisplayResult(string Html)
{
return null;
}
我在网上搜索并找到了一些相关的帖子,但是那些在谈论不同的解决方案,例如使用Html.Beginform()
和提交按钮-但是这些解决方案都不符合我的需求。
答案 0 :(得分:1)
发送HTML内容不安全,因此会出现错误。尽管您可以绕过此错误,但是禁用输入验证,但不建议这样做:
[ValidateInput(false)]
public class YouController: Controller{
}
答案 1 :(得分:0)
You have javascript errors and your call is wrong you will need to stringify the data.
function abc() {
var html = $("#div").html();
var dataToSend = JSON.stringify({ 'Html': html });
$.ajax({
url: '/Home/DisplayResult', //
data: dataToSend,
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (result) {
//do something
},
error: function(xhr) {
alert("error");
}
});
}
And I have this in HomeController:
[HttpPost]
public FileResult DisplayResult(string Html)
{
return null;
}
答案 2 :(得分:0)
内容类型可能错误,但是您可以从浏览器内部检查错误(使用“网络”标签并单击您的请求,甚至使用提琴手)
如果不测试代码,我不能说太多,但是另一种选择是检查error
函数的responseText:
error: function(xhr, status, error) {
alert(err.responseText);
}
答案 3 :(得分:0)
如果在contentType中定义“ application / json”,则必须在字符串操作后将其发送。
$.ajax({
url: '@Url.Action("DisplayResult", "Default")', //
data: JSON.stringify(data),
type: "POST",
contentType: "application/json; charset=utf-8",
success: function(result) {
//do something
});
},
error: function(xhr) {
alert("error");
}
如果您未定义“ application / json”,则默认的contentType为“ application / x-www-form-urlencoded”,您可以将该对象传递给data参数而无需JSON.stringify。