我是MVC编程的新手,请原谅这个问题中的任何愚蠢。
$(document).ready(function () {
$("#btnGenerate").click(function () {
$.ajax({
type: "GET",
url: '/Main/MyMethod',
data: JSON.stringify($('#searchForm').serializeArray()),
dataType: 'json',
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
})
return false;
});
});
还有我在控制器中的方法:
[HttpGet]
public FileStreamResult MyMethod(MyModel r)
{
return null;
}
我确实收到500个内部服务器错误。
答案 0 :(得分:0)
尝试使用serialize()
代替serializeArray()
$.ajax({
type: "GET",
url: '/Main/MyMethod',
data: JSON.stringify($('#searchForm').serialize()),
dataType: 'json',
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
})
您还可以尝试将method属性更改为HttpPost
:
[HttpPost]
public FileStreamResult MyMethod(MyModel r)
{
return null;
}
答案 1 :(得分:0)
如果您要发布信息,
$.ajax({
type: "POST",
url: '/Main/MyMethod',
data: {
//your MyModel properties e.g. name
name: "MyName",
age: 1
},
success: function(data){
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
})
答案 2 :(得分:0)
$(function(){
$("#_frmId").submit(function(){
event.preventDefault(); // Prevent the default behaviour of the form.
var formdata = $("#_frmId").serialize(); // Serializes the form
$.ajax({
url: '@Url.Action("// Method", "// Controller")',
type:'POST',
data: formdata,
success: function(result){
// Do whatever
}
});
});
})
_frmId
表单的ID。
提交表单后,它将调用此方法。
此外,在序列化传递给控制器的数据时,无需对其进行字符串化处理。
您要传递给控制器的是View的模型,而不是表单模型。
所以您的控制器动作应类似于
public FileStreamResult MyMethod(//<The View model> r)
最后,您要将数据发布到控制器,因此请删除[HttpGet]
答案 3 :(得分:0)
如果序列化不起作用,也可以尝试这种方法。
$("#my_form").submit(function(event){
event.preventDefault(); //prevent default action
var post_url = $(this).attr("action"); //get form action url
var request_method = $(this).attr("method"); //get form GET/POST method
var form_data = $(this).serialize(); //Encode form elements for submission
`$.ajax({
url : post_url,
type: request_method,
data : form_data
}).done(function(response){ //
$("#server-results").html(response);
});
})`