如何将jQuery.get()与完全限定的URL一起使用

时间:2011-03-29 18:59:23

标签: jquery syntax

我是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的数据?

1 个答案:

答案 0 :(得分:2)

如果您的HTML文件是本地的,但数据文件是远程的,则会违反“跨域”安全策略。

这些要求AJAX请求与原始HTML文件在同一个域中提供。

要解决,请:

  1. 使用JSONP,它使用<script>标记或
  2. 来破坏策略
  3. 查看从CGI脚本提供Access-Control-Allow-Origin标题。