我使用ajax从服务器获取文件,该文件是JSON格式的字符串数组。 当我执行如下的ajax请求时,jQuery会自动将JSON字符串解析为数组。
$.ajax({
url: "modules.php",
success: function (data) {
//data is an array object not text
}
});
但是我想将数据保存到localStorage,它只能保存字符串。 我宁愿停止jQuery自动解析JSON字符串,保存文本然后自己解析JSON,而不是将数组(数据)转换回字符串。 更像是:
$.ajax({
url: "modules.php",
success: function (data) {
//jQuery hasn't parsed the JSON already, and data is a string.
localStorage.setItem("modules", data);
var parsedData = $.parseJSON(data);
//use the array
}
});
答案 0 :(得分:6)
答案 1 :(得分:4)
您需要使用dataType
属性绕过jQuery MIME类型验证:
$.ajax({
url: "modules.php",
success: function (data) {
//data is an array object not text
},
dataType: "html"
});
答案 2 :(得分:1)
根据文档,“如果在ajax调用中没有指定dataType
,jQuery将尝试根据响应的MIME类型推断[数据类型]。
在每次通话的基础上,您可以将dataType
添加到呼叫正文中,如AsKaiser所示(但我会使用text
代替html
)。如果您总是希望为每个ajax调用返回纯文本,则可以使用jQuery的$.ajaxSetup()
。
答案 3 :(得分:0)
不要使用JQuery!您可以对此请求使用纯JavaScript。你试过http://www.w3schools.com/ajax吗?请参阅请求和响应。您将使用稍多的代码,但它会更快,并直接给您回复。这是我写的包装器:
function AJAX(url, success, async) {
if (window.XMLHttpRequest) {
var request = new XMLHttpRequest;
} else {
// IE6 and IE5 (unnecessary)
var request = new ActiveXObject("Microsoft.XMLHttp");
}
if (async) request.onReadyStateChange = function() {
if (request.readyState == 4) {
success(request.status, request.responseText);
}
};
request.open("GET", url, async);
request.send();
if (!async) success(request.status, request.responseText);
}
此函数将URL作为字符串,将success函数作为接受(status code, response string)
的函数,以及它是否作为布尔值异步。