2016-02-12 36 views
0

我有一个奇怪的问题,我似乎无法弄清楚。我的应用程序使用AJAX命中JSON并检索数据。我使用该平台的内置参数支持过滤categorytag。所以,我的格式(工作)看起来是这样的:如何正确地将URL参数添加到AJAX数据对象?

例(工作):

$.ajax({ 
    url: "http://blog.squarespace.com/blog", 
    data: {format:"json",tag:"mobile"}, 
    dataType: "json", 
    method: "GET" 
}).done(function(data){ console.log(data) }); 

记录的数据:

Object {website: Object, websiteSettings: Object, collection: Object, template: Object, shoppingCart: Object…} 
calendarView: false 
collection: Object 
empty: false 
emptyFolder: false 
items: Array[1] 
shareButtons: Object 
shoppingCart: Object 
showCart: false 
tagFilter: "mobile" 
template: Object 
website: Object 
websiteSettings: Object 
__proto__: Object 

上面,你可以看到它检索的items阵列,因为一个职位存在。

当我击中使用多个单词或非字母字符的类别/标签时,问题就出现了。 AJAX请求

例(不工作):

$.ajax({ 
    url: "http://blog.squarespace.com/blog", 
    data: {format:"json",tag:"Lee%20and%20Morris"}, 
    dataType: "json", 
    method: "GET" 
}).done(function(data){ console.log(data) }); 

Object {website: Object, websiteSettings: Object, collection: Object, template: Object, shoppingCart: Object…} 
calendarView: false 
collection: Object 
empty: false 
emptyFolder: false 
shareButtons: Object 
shoppingCart: Object 
showCart: false 
tagFilter: "Lee%20and%20Morris" 
template: Object 
website: Object 
websiteSettings: Object 
__proto__: Object 

可以确认此位置,只需在访问URL在浏览器中有可用的帖子:http://blog.squarespace.com/?format=json&tag=Lee%20and%20Morris

尝试调试后,我我们还发现,通过附加标签参数并击中该URL,它可以按预期工作。

例(工作):

$.ajax({ 
    url: "http://blog.squarespace.com/blog?tag=Lee%20and%20Morris", 
    data: {format:"json"}, 
    dataType: "json", 
    method: "GET" 
}).done(function(data){ console.log(data) }); 

calendarView: false 
collection: Object 
empty: false 
emptyFolder: false 
items: Array[1] 
shareButtons: Object 
shoppingCart: Object 
showCart: false 
tagFilter: "Lee%20and%20Morris" 
template: Object 
website: Object 
websiteSettings: Object 
__proto__: Object 

所以我的问题是,为什么在地球上这种不使用data对象时工作,但工作,否则罚款?

+3

我相信jQuery默认编码值。如果你使用'data:{format:“json”,标签:“Lee and Morris”},'?会发生什么? –

+0

“发送错误的代码”是什么意思? –

+0

感谢Felix King,看起来就是这样。我正在检查我需要调整的问题。但是如果字符串已经被编码了,那应该不够好吗?我不太明白为什么会出现问题。 – jasonbarone

回答

0

根据Felix King的评论,我的问题是由于jQuery为您编码数据对象字符串。通过简单地使用未编码字符串来执行请求,我的问题就解决了。

$.ajax({ 
    url: "http://blog.squarespace.com/blog", 
    data: {format:"json",tag:"Lee and Morris"}, 
    dataType: "json", 
    method: "GET" 
}).done(function(data){ console.log(data) });