使用Ajax时,我无法将数据作为变量传递

时间:2016-05-11 16:15:14

标签: 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',
    data: { new_names },
});

非常感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

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

{ 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

没有理由修改符号或引入额外的引号或括号。文字对象是一个文字对象,按原样。无论是在线使用还是将其存储在变量中并使用变量,定义文字对象本身的符号都不会改变。

答案 1 :(得分:0)

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
});

答案 2 :(得分:0)

替换'('代表'{'

var new_names = {name:'Donald', town:'Ducktown'} ;

并删除数据中的“{”

   data: new_names

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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'},
    });