如何强制使用 jQuery 对 GET 请求进行字符串响应?

How to force string response on a GET request with jQuery?

我写了下面的代码:

$.get('http://example.com/books.json', function (data) {
  // ...
});

books.json是新书的对象列表,有时jQuery会把JSON数据解析成对象,但有时会留下字符串(可能是因为某些international/utf8 问题)。在那种情况下,我自己调用 JSON.parse() 并获得有效的 JSON 对象。

因此我有一个问题 - 在使用 jQuery 执行 GET 请求时强制执行 JSON.parse 的正确方法是什么?我不想 jQuery 猜测它是否是 JSON 数据。我怎么能让 jQuery 一直认为它是字符串,而我总是自己调用 JSON.parse?

我认为最好的方法是使用 jQuery.getJSON() 而不是 $.get.

如果 data 参数的值是一个普通对象,它会被转换成一个字符串并在附加到 URL 之前进行 url 编码。

大多数实现都会指定成功处理程序:

$.getJSON( 'http://example.com/books.json', function( data ) {

    $.each( data, function( key, val ) {
        console.log('key is : '+key+" AND value is :"+val);
    });

});

Source

$.get 有一个可选的 dataType 参数,您可以指定 text 强制它 return 将数据作为纯字符串。

$.get('http://example.com/books.json', function (data) {
  // ...
}, "text");

否则,它会查看响应中的 Content-type: header 以确定数据类型。

如果你想强制一个JSON解析,你可以指定json,或者你可以使用$.getJSON.