获取ajax电话和参数?

时间:2014-07-07 15:34:44

标签: jquery

我需要在我的ajax调用中设置params。我试过了:

$.ajax({
        url: '/gateway',
        data: {'a': 'b'},
        type: 'GET',
        processData: false,
        contentType: false,
        timeout: 30000
    })

但这只是附加

?[object%20Object] 

我哪里错了?

2 个答案:

答案 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