使用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 },
});
非常感谢您的帮助。
答案 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'},
});