Jquery MVC ajax返回字符串作为[object]对象
这是我的ajax代码,它提交一个formdata和一个文件。 如果我总是删除我的自定义字符串“has”文件,它将工作并返回“1234567”。我希望返回has“has file 1234567”,但总是抛出[object]对象Jquery MVC ajax返回字符串作为[object]对象,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,这是我的ajax代码,它提交一个formdata和一个文件。 如果我总是删除我的自定义字符串“has”文件,它将工作并返回“1234567”。我希望返回has“has file 1234567”,但总是抛出[object]对象 $( document ).ready(function() { $('#scan').change(function (e) { debugger var element = this; var for
$( document ).ready(function() {
$('#scan').change(function (e) {
debugger
var element = this;
var formData = new FormData();
var totalFiles = document.getElementById("scan").files.length;
var file = document.getElementById("scan").files[0];
formData.append("scan", file);
$.ajax({
url: '@Url.Action("scancode", "Products")',
type: "POST",
dataType: "json",
data: formData,
processData: false,
contentType: false,
success: function (data) {
$('#barcode').val(data);
},
error: function (err) {
document.getElementById('emsg').innerHTML = err;
}
});
});
});
控制器
public string scancode(HttpPostedFileBase scan) {
var str = "";
if (scan !=null)
{
str = "has file";
}
try
{
IBarcodeReader reader = new BarcodeReader();
// load a bitmap
var barcodeBitmap = (Bitmap)Bitmap.FromStream(scan.InputStream);
// detect and decode the barcode inside the bitmap
var result = reader.Decode(barcodeBitmap);
// do something with the result
if (result != null)
{
str =str+ result.Text;
}
}
catch (Exception ex)
{
str = ex.Message;
}
return str;
}
您必须始终从控制器向ajax查询返回
JsonResult
。只需使用Json(stringvalue)将字符串转换为JsonResult
代码>
您的代码将成为:
public JsonResult scancode(HttpPostedFileBase scan)
{
var str = "";
if (scan !=null)
{
str = "has file";
}
try
{
IBarcodeReader reader = new BarcodeReader();
// load a bitmap
var barcodeBitmap = (Bitmap)Bitmap.FromStream(scan.InputStream);
// detect and decode the barcode inside the bitmap
var result = reader.Decode(barcodeBitmap);
// do something with the result
if (result != null)
{
str =str+ result.Text;
}
}
catch (Exception ex)
{
str = ex.Message;
}
return Json(str);
}
实际上,您不能从ajax调用返回字符串。而是返回一个JSON对象。
将返回类型更改为JsonResult
:
public JsonResult scancode(HttpPostedFileBase scan)
而不是返回str代码>返回Json:
return Json(new { someString = str });
最后,您的ajax调用应该如下所示:
success: function (data) { $('#barcode').val(data.someString); }
检查您的ajax调用是否得到200 OK响应您实际上无法从ajax调用返回字符串。而是返回一个JSON对象。将返回类型更改为JsonResult:publicjsonresult扫描代码(HttpPostedFileBase扫描)
而不是returnstr
返回Json:返回Json(new{someString=str})在ajax调用中:success:function(data){$('#barcode').val(data.someString)}
数据类型:“json”在这种情况下正确吗?我不认为文件可以通过ajax发布……有人能纠正我吗?既然您指定了数据类型:“json”
,那么您的方法应该是publicJSONResult扫描代码(…)
和返回json(str)
@AizhongChen,因为您已经指定了数据类型:“json”
,并且您将返回一个包含空格的字符串,该字符串将被解释为3项(注意,它只需要返回json(str);
并保留$('#条形码').val(数据)
)