Javascript 在使用Ajax时,我不能将数据作为变量传递

Javascript 在使用Ajax时,我不能将数据作为变量传递,javascript,jquery,Javascript,Jquery,在使用Ajax时,我不能将数据作为变量传递 以下代码可以正常工作: $.ajax({ type: 'GET', url: 'test10.php', data: { name:'Donald', town:'Ducktown' }, }); 以下代码不起作用: var new_names = ("name:'Donald', town:'Ducktown'") ; $.ajax({ type: 'GET', url: 'test10.php',

在使用Ajax时,我不能将数据作为变量传递

以下代码可以正常工作:

$.ajax({
    type: 'GET',
    url: 'test10.php',
    data: { name:'Donald', town:'Ducktown' },
});
以下代码不起作用:

var new_names = ("name:'Donald', town:'Ducktown'") ;
$.ajax({
    type: 'GET',
    url: 'test10.php',
    data: { new_names },
});
非常感谢您的帮助。

2个错误:

var new_names = {name:'Donald', town:'Ducktown'}; // create a proper literal
$.ajax({
    type: 'GET',
    url: 'test10.php',
    data: new_names, // don't put braces here
});
将“(”替换为“{”

var new_names = {name:'Donald', town:'Ducktown'} ;
并删除数据中的“{”

   data: new_names

您需要将数据作为对象而不是字符串传递:

var new_names = {name:'Donald', town:'Ducktown'} ;
$.ajax({
    type: 'GET',
    url: 'test10.php',
    data: new_names,
});

这里的错误是您需要传递一个对象,请检查正确的代码:

var new_names = {name:'Donald', town:'Ducktown'};
$.ajax({
    type: 'GET',
    url: 'test10.php',
    data: new_names,
});
或者您可以这样做:

$.ajax({
        type: 'GET',
        url: 'test10.php',
        data: {name:'Donald', town:'Ducktown'},
    });

它不起作用,因为它不是同一件事。第一个示例将此作为数据对象:

{ name:'Donald', town:'Ducktown' }
这是一个有效的对象。如果我们重新考虑第二个示例,我们可以将其简化为一个语法错误。从您拥有的开始:

var new_names = ("name:'Donald', town:'Ducktown'");
//...
{
    data: { new_names }
}
首先删除括号,因为它们在这里实际上没有任何作用:

var new_names = "name:'Donald', town:'Ducktown'";
//...
{
    data: { new_names }
}
然后取消使用变量作为临时存储:

{
    data: { "name:'Donald', town:'Ducktown'" }
}
您可以看到它成为问题的原因。这只是括号中的字符串文字,不是有效的对象(甚至不是有效的语法,尽管使用变量作为临时存储可能会以某种方式使其通过解析器)。您可以使字符串本身成为对象上的值:

{ someValue: "name:'Donald', town:'Ducktown'" }
但我怀疑这是你想要的。如果你只是想将对象存储在变量中,那么为什么要更改符号?只需将其存储为变量,就像你已经在使用它一样:

var new_names = { name:'Donald', town:'Ducktown' };
然后使用变量:

data: new_names

没有理由修改表示法或添加额外的引号或方括号。文字对象就是文字对象。无论是联机使用还是将其存储在变量中并使用变量,定义文字对象本身的表示法都不会更改。

您必须为新的{u name.Objects(该{}定义了一个新对象)指定一个值是hashmaps,没有值,它不知道你想做什么。
var new_names=(“name:'Donald',town:'Ducktown'”;
你没有正确复制示例。你的示例是一个语法错误,你不能像这样在对象文本中放入字符串。投票解决与问题相关的所有问题,包括额外的
和嵌套对象。@DenysSéguret:它在功能上与原始对象有什么不同?我希望在第二个原始示例中,括号不会起什么作用,而定义变量的表达式只会将其定义为字符串。你能澄清区别吗?@David
(“…”)
只是一个字符串文字。{“…}是该赋值中的语法错误。这是非常不同的。@DenysSéguret:是的……这是问题中的一个错误。在这个答案中得到了解决。感谢大家的回答。将“(”替换为“{”)并从数据中删除“{”:解决了我的问题。