我正在尝试将用JS打开的csv文件发送到用C#编写的方法,其中csv文件将被解析并添加到数据库中。
打开文件并获取其内容没有问题。 但无论我对Ajax调用做什么,我都会在CreateFromFile方法中收到空数据。 在这里你可以看到我的代码:
var a = fr.result;
$.ajax({
url: "/DeviceInstance/CreateFromFile",
type: "POST",
datatype: "html",
data: a,
error: function (data) {
alert("Dodanie nie powiodło się Jeden lub wiecej numerów seryjnych nie są nikalne " + data);
},
success: function (data) {
if (data.length > 0) {
alert(data);
}
else {
alert("Operacja zakonczona sukcesem")
}
}
});
和
[HttpPost]
public JsonResult CreateFromFile(object data)
{
return Json("Sukces");
}
我问我应该如何修改我的代码以使其有效?
这里:fr.result:
samsung;galaxy ;s3;1234567
samsung;galaxy ;s4;54321
samsung;galaxy ;s5;34567yu8
答案 0 :(得分:1)
尝试以下操作(假设您的a
有效负载实际上是一个字符串):
$.ajax({
url: '/DeviceInstance/CreateFromFile',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({ dane: a }),
/* callbacks */
});
您的控制器操作现在应如下所示:
[HttpPost]
public JsonResult CreateFromFile(string dane)
{
// Parse CSV data from "dane"
}
希望这有帮助。
答案 1 :(得分:1)
您可以读取请求输入流以访问正文有效负载:
[HttpPost]
public JsonResult CreateFromFile()
{
byte[] data = new byte[Request.InputStream.Length];
Request.InputStream.Read(data, 0, data.Length);
string csv = Encoding.UTF8.GetString(data);
// ... do something with the csv
return Json("Sukces");
}
同样在您的AJAX请求中,您似乎已指定datatype: "html"
。这有两个问题:
dataType
,而不是datatype
。html
,但您的控制器操作返回JSON。这是非常不一致的事情。我建议你摆脱这个参数,让jQuery使用响应Content-Type
标题来自动推断出正确的类型。