如何格式化来自getJSON()jQuery调用的HTTP请求的HTTP响应

时间:2014-11-11 20:17:32

标签: javascript jquery json http http-headers

这就是事情:

我为论文创建了一个完全自定义的服务器。在客户端,我希望能够请求服务器处理的数据库调用。然后它在HTTP中给出响应,以JSON提供查询结果。

我现在打电话的方式是:使用JQuery' getJSON()'方法

虚拟示例:

<script type="text/javascript">
        $(document).ready(function(){
                $.getJSON('./db/q="select * from *"', function(result){
                    process(result);
                });
        });
</script>

在浏览器中使用此脚本运行网页会在服务器端生成以下HTTP标头:

request: GET /db/q="select * from *"
Host: 127.0.0.1:9000
Connection: keep-alive
Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Referer: http://127.0.0.1:9000/web/widgets/gauge.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4,id;q=0.2

我的问题:从服务器到浏览器的HTTP 1.1响应如何显示,以便从“结果”中的响应中获取JSON有效负载。浏览器中的javascript中的参数?

1 个答案:

答案 0 :(得分:1)

  1. 要使用jQuery通过AJAX获取JSON数据,您不需要使用getJSON。如果他们在回复中看到任何$.get$.post$.ajax,则会自动解析JSON。

  2. 身体没有特定的格式。只要它是有效的JSON,jQuery就会将JSON对象的根目录放入result。例如,如果您的回复是{foo: 'bar'},则您的result对象的result.foo广告将设置为"bar"

  3. 在您的回复中,要使jQuery自动将内容视为JSON,您需要指定标题Content-Type: application/json。所有其他标题都无关紧要。

  4. 将查询从GET参数移动到POST参数可能是一个更好的主意,因此您不必在查询字符串上对其进行url-encode。