我需要在我的ajax调用中设置params。我试过了:
$.ajax({
url: '/gateway',
data: {'a': 'b'},
type: 'GET',
processData: false,
contentType: false,
timeout: 30000
})
但这只是附加
?[object%20Object]
我哪里错了?
答案 0 :(得分:0)
删除:
processData: false
它不处理你给它的对象; jQuery默认会执行此操作,但是您要覆盖该功能并告诉它不要。
答案 1 :(得分:0)
问题是您使用processData
标志。删除它,您的请求将按预期工作。
取自the documentation(强调补充):
默认情况下,作为对象传入数据选项的数据(技术上,除字符串以外的任何内容)将被处理并转换为查询字符串,适合默认内容类型“应用程序/ x WWW的形式进行了urlencoded”。如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false。
您将此标志设置为false,因此您的data
属性未转换为查询字符串。 JavaScript只是传递该对象的字符串值[object Object]
以此代码为例:
a = {"a":"b"}
String(a) // "[object Object]"
在您的情况下,此值将被编码为URL字符串,该字符串将空格字符转换为%20
。