2012-07-12 68 views
1
$.ajax({ 
       type: "GET", 
       async: false, 
       url: "http://localhost:1234/api/", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       data: '{"id":"125"}', 
       success: function (data) { 
        console.log(data.toString()); 
       } 
      }); 

当我使用jQuery ajax调用API时,我传递的数据没有很好地转换为查询字符串参数。当使用jQuery ajax进行api请求时,数据不能很好地转换为查询字符串参数

这是我看到的被称为。

http://localhost:1234/api/?{%22id%22:%22125%22} 

但是当我将数据作为对象传递时,data:{“id”:“125”}工作正常。我在这里做错了什么?

+1

使用'data:{“id”:“125”}'。 – 2012-07-12 19:28:06

+0

内容类型是应用程序/ JSON所以我不应该作为JSON字符串传递?那么为什么我应该指定内容类型? – user1186065 2012-07-12 19:30:40

+0

你已经指定了'contentType:'application/json'',这正是jQuery使用的:JSON。正如你所说的那样。这就是你在查询字符串中看到的:JSON。如果这不是你想要在你的查询字符串中看到的,那么不要告诉jQuery使用这个contentType。 – 2012-07-12 19:37:16

回答

0

因为您指定了JSON数据类型,所以您将数据作为js对象传递,并且jQuery将其转换为JSON格式。

$.ajax({ 
     type: "GET", 
     async: false, 
     url: "http://localhost:1234/api/", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: {"id": 125}, 
     success: function (data) { 
      console.log(data.toString()); 
     } 
    }); 
+0

我已经试过了,它为我工作。但试图理解为什么我必须作为一个对象而不是JSON字符串传递,即使我的内容类型是json。 – user1186065 2012-07-13 14:50:39

+1

当您将内容类型设置为JSON时,jQuery将您的对象转换为JSON,如果将其设置为HTML,则可以传递字符串并且不会转换。它更容易使用! – odupont 2012-07-14 08:45:08

相关问题