Jquery 尝试传递具有特定格式的字符串

Jquery 尝试传递具有特定格式的字符串,jquery,json,Jquery,Json,我知道我试图通过的格式,它应该是这样的: [{"blah.png"},{"blah2.png"}] var filesObj = {files:[]}; //initialize as javascript object $('#fileList .files .fileName').each(function () { var name = $(this).text(); filesObj.files.push(name); }); console.log(filesOb

我知道我试图通过的格式,它应该是这样的:

[{"blah.png"},{"blah2.png"}]
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"
});
var filesObj = [];

$('#fileList .files .fileName').each(function () {
    var name = $(this).text();
    filesObj.push(name);
});
$.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);
    }
});
但是,我要返回的是:

["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"
});
任何帮助都将不胜感激。谢谢

[{"blah.png"},{"blah2.png"}] 
将不是有效的JavaScript或JSON。如果您想使用对象而不是字符串,那么循环看起来更像这样

$('#fileList .files .fileName').each(function () {
    var name = $(this).text();
    filesObj.push({"name": name});
});

在这里,每个对象都有一个键“name”和一个对应于
$(this).text()的值

您可以这样做:

[{"blah.png"},{"blah2.png"}]
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"
});
var filesObj = [];

$('#fileList .files .fileName').each(function () {
    var name = $(this).text();
    filesObj.push(name);
});
$.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);
    }
});

对于任何对未来感兴趣的人

我解决这个问题的方法不是通过字符串的格式,而是更改
AJAX
调用

我这样设置我的对象:

[{"blah.png"},{"blah2.png"}]
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"
});
var filesObj = [];

$('#fileList .files .fileName').each(function () {
    var name = $(this).text();
    filesObj.push(name);
});
$.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);
    }
});
这将发布一个字符串,如:
[“delete icon.png”,“something.exe”]

诀窍是将我的
AJAX
修改为
POST
,如下所示:

[{"blah.png"},{"blah2.png"}]
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"
});
var filesObj = [];

$('#fileList .files .fileName').each(function () {
    var name = $(this).text();
    filesObj.push(name);
});
$.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
;您正在删除具有键但没有值的对象。你到底想要什么?我正试图
将字符串对象发布到
列表
服务器端。不幸的是,这样做仍然无法获得我认为需要的格式。我的最终目标是将其传递到我的C#控制器中的列表对象中。由于某些原因,它似乎仍然返回null。不幸的是,这样做仍然不能得到我认为需要的格式。我的最终目标是将其传递到我的C#控制器中的列表对象中。出于某种原因,它似乎仍然返回null。