我有一个JS函数:
$(document).on('click', '#submitForm', function (e) {
var fileName = $('#fileName').val();
$.ajax({
type: 'POST',
url: '/Calculation/FileExist',
data: { 'fileName': fileName },
dataType: 'bool',
success: function (result) {
if (result.returnvalue) {
e.preventDefault();
alert(result.returnvalue);
alert("The filename already exists. Please choose another one");
}
else {
alert("The file doesn't exist");
}
}
});
});
我的行动:
public ActionResult FileExist(string fileName)
{
bool result = true;
string path = Server.MapPath(TempPath) + fileName + ".xlsx"; //Path for the file
string[] Files = Directory.GetFiles(Server.MapPath(TempPath));
for (int i = 0; i < Files.Length; i++)
{
if (path == Files[i])
{
//The filename already exists
result = false;
}
}
return Json(new { returnvalue = result });
}
我在这里做错了什么?我试图从FileExist方法获取bool值,如果它是真的,则停止提交表单(e.preventDefault)
答案 0 :(得分:2)
没有dataType: 'bool'
。请使用dataType:'json'
dataType:'text'
发送布尔值
在您的情况下,它应该是dataType:'json'
$.ajax({
type: 'POST',
url: '/Calculation/FileExist',
data: { 'fileName': fileName },
dataType: 'json',
success: function (result) {
if (result.returnvalue) {
e.preventDefault();
alert(result.returnvalue);
alert("The filename already exists. Please choose another one");
}
else {
alert("The file doesn't exist");
}
}
});
然后
[HttpPost]
public ActionResult FileExist(string fileName)
{
}
答案 1 :(得分:1)
在控制器方法之上,您必须放置此注释:
[HttpPost]
答案 2 :(得分:1)
首先,在jquery ajax请求中指定dataType: 'json'
:
$.ajax({
// <...>
dataType: 'json'
// <...>
});
如果您想使用HTTP GET
:
public ActionResult FileExist(string fileName)
{
// <...>
return Json(model, JsonRequestBehavior.AllowGet);
}
您可以使用HTTP POST
方法:
[HttpPost] // Add this attribute.
public ActionResult FileExist(string fileName)
{
// <...>
return Json(model);
}
答案 3 :(得分:1)
将[HttpPost]
添加到控制器,设置dataType:'json'并在jquery ajax中设置async:false
为什么需要POST方法。只需使用GET方法并在控制器中添加JsonRequestBehavior.AllowGet
答案 4 :(得分:0)
将datatype
设为json
而不是 bool ,并在您的操作或其他方式添加[HttpPost]
属性是type:'GET'
答案 5 :(得分:0)
服务呼叫中的可用数据类型为:
- XML
- HTML
- 脚本
- JSON
- JSONP
醇>
根据您的代码:
在从服务器返回json时将dataType更改为json。
默认情况下,ActionResult将在您的ajax调用中使用GET
,并指定POST
。
因此请在方法的顶部添加[HttpPost]
。