我是jQuery(以及AJAX)的新手,我正在努力了解get / post / ajax方法的工作原理。所以我创建了一个简单的.html页面,其中包含以下jQuery语句:
function myImport() {
var url = '../rawdata.txt';
$.get(url, function (data) {
$('#importedHtml').text(data);
});
}
您会注意到url var设置为名为'rawdata.txt'的本地文件。此文件包含此数据:
0,Sun 18:32:56,0,
1,999 uS,1,
2,4561 F,0,
3,3.4,1,
4,3.3,1,
5,0.0%,0,
15,0 G,1,
16,0 G,1,
19,18.55hrs,3,
27,Setpoints,3,
28,ON: 50.16hrs,0,
29,Interlocked S,3,
30,Interlocked S,3,
31,Interlocked S,3,
正如您所看到的,当触发myImport()函数时,.get()方法会抓取本地rawdata.txt文件,然后在html元素中显示该文件的内容。这一切都很好。
但是,我想使用.get()方法从实时Web服务器(而不是本地文件)中获取数据,但是当我尝试这样做时,我得不到服务器的响应。我知道,肯定的是,Web服务器已启动并正确响应请求(通过常规浏览器)。所以,在这一点上,我不确定我是否正在使用.get()方法,或者其他东西。
例如:
更新的jQuery语句如下所示:
function myImport() {
var url = 'http://173.196.155.45/taco.cgi?F0=AV&F1=4564';
$.get(url, function (data) {
$('#importedHtml').text(data);
});
}
您会注意到唯一的区别是'url'变量的值。 url var现在指向实时Web服务器。 url请求将使用与“rawdata.txt”文件中存在的数据类似的数据进行响应。
您会注意到,如果您访问the live url,您将收到纯文本的回复(没有HTML语法,标题等 - 只是一串数据)。但是,如果您要运行jQuery示例,则.get()方法的“data”变量中没有内容。
我在包含live url的脚本中使用了.get()方法错了吗?更具体地说,我如何使用jQuery来获取生成this live url的数据?
答案 0 :(得分:2)
如果您的HTML文件是本地的,但数据文件是远程的,则会违反“跨域”安全策略。
这些要求AJAX请求与原始HTML文件在同一个域中提供。
要解决,请:
<script>
标记或Access-Control-Allow-Origin
标题。