我知道我想要传递的格式,它应该是这样的:
[{"blah.png"},{"blah2.png"}]
但是我回来了:
["blah.png","blah2.png"]
这是我的代码:
var filesObj = [];
$('#fileList .files .fileName').each(function () {
var name = $(this).text();
filesObj.push(name);
});
console.log(filesObj);
$.ajax({
type: "POST",
url: "/dat/Controller",
data: JSON.stringify(filesObj),
dataType: "json"
});
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
[{"blah.png"},{"blah2.png"}]
不是有效的JavaScript或JSON。如果你想使用对象而不是字符串,你的循环看起来更像是
$('#fileList .files .fileName').each(function () {
var name = $(this).text();
filesObj.push({"name": name});
});
此处,每个对象都有一个键," name",以及一个与$(this).text();
对应的值
答案 1 :(得分:0)
你可以这样做:
var filesObj = {files:[]}; //initialize as javascript object
$('#fileList .files .fileName').each(function () {
var name = $(this).text();
filesObj.files.push(name);
});
console.log(filesObj);
$.ajax({
type: "POST",
url: "/FileUpload/ImportCommit",
data: JSON.stringify(filesObj),
dataType: "json"
});
答案 2 :(得分:0)
对任何对未来感兴趣的人......
我修复此问题的方式不是字符串格式,而是更改AJAX
调用。
我设置了这样的对象:
var filesObj = [];
$('#fileList .files .fileName').each(function () {
var name = $(this).text();
filesObj.push(name);
});
这会发布一个字符串,如:["delete-icon.png","something.exe"]
诀窍是将我的AJAX
修改为POST
,如下所示:
$.ajax({
type: "POST",
url: "/dat/Controller",
data: JSON.stringify(filesObj),
contentType: "application/json",
traditional: true,
success: function (result) {
console.log("Success: " + result);
},
error: function (result) {
console.log("Error: " + result);
}
});
将dataType
更改为contentType
并添加traditional: true
似乎对我有用。这个(我相信)的原因是因为我发布的实际数据在技术上不是JSON
。我添加traditional: true
只是为了安全起见。