使用jQuery'GET'功能从服务器读取CSV文件时,我没有得到任何数据。当我使用FireBug查看代码时,我可以看到发送了GET请求,返回值为“200 OK”。此外,我看到正确返回标头,因此请求肯定是,并返回数据。这也是我在Wireshark中看到的。在这里,我看到CSV文件的完整内容作为标准HTTP响应返回 但是我的脚本中没有实际数据。 Firebug显示空响应,并且永远不会调用'success'函数。可能有什么不对?
编辑:我的问题似乎缺少信息的重要部分。以下代码在我的本地计算机上运行,由使用内置测试服务器的Firefox中的Aptana Studio启动。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>New Web Project</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var csvData;
$(document).ready(function() {
$("#btnGET").click(function() {
csvData = $.ajax({
type: "GET",
url: "http://www.mywebsite.com/data/sample_file.csv",
dataType: "text/csv",
success: function () {
alert("done!"+ csvData.getAllResponseHeaders())
}
});
});
})
</script>
</head>
<body>
<h1>New Web Project Page</h1>
<button id="btnGET">GET Data</button>
</body>
</html>
答案 0 :(得分:1)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>New Web Project</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var csvData;
$(document).ready(function() {
$("#btnGET").click(function() {
csvData = $.ajax({
type: "GET",
url: "http://www.mywebsite.com/data/sample_file.csv",
dataType: "text/csv",
success: function (result) {
alert(result);
alert("done!"+ csvData.getAllResponseHeaders())
}
});
});
})
</script>
</head>
<body>
<h1>New Web Project Page</h1>
<button id="btnGET">GET Data</button>
</body>
</html>
答案 1 :(得分:1)
由于我理解dataType只接受“text”作为参数,可能你可以去吗?您也可以参考以下页面: http://api.jquery.com/jQuery.ajax/
感谢。
答案 2 :(得分:1)
代码不起作用,因为我尝试进行跨域GET。页面和脚本托管在我的本地计算机上,GET尝试从完全不同的域中检索数据。虽然技术上可行,但它被所有现代浏览器阻止,因为它是一个安全漏洞 弗雷德里克·贝伦茨为我指出了正确的方向。而且他还提到允许的唯一跨域GET是使用“jsonp”。
以下文字取自jQuery文档:
“由于浏览器安全限制,大多数”Ajax“请求都受到相同的原始策略的约束;请求无法从不同的域,子域,端口或协议中成功检索数据。”
答案 3 :(得分:0)
$.ajax({
type: "GET",
url: "http://www.mywebsite.com/data/sample_file.csv",
dataType: "text/csv",
success: function (data) {
csvData = data;
//alert("done!"+ csvData.getAllResponseHeaders()) - my fix makes this won't work...
}
});
答案 4 :(得分:-1)
我尝试注释掉dataType,并且它起作用了。