使用$ .AJAX加载HTML页面的一部分,并将值传递给<span> </span>

时间:2014-01-02 01:37:05

标签: jquery html ajax

这是我从服务器检索2行htlm页面的ajax代码...

   $.ajax({
    type: 'GET',
    url: 'http://sc3.******/7.html', 
    success: function(data) {
       var result1 = $( '<html />' ).html(data);
       var result2 = $( result1 ).filter( '#body' );  

       $('#resultSpan').text(result1) ;            
       alert( result1 ); // no alert at all here
    },
    error: function(jqXHR, textStatus, errorThrown) {
   alert( 'jqXHR  :' + jqXHR);
       $( '#resultSpan' ).text( 'Error: ' + jqXHR  ) ;  
    }
 });

这个页面非常简单

<HTML>
   <meta http-equiv="Pragma" content="no-cache"></head>
   <body>6,1,22,50,5,128,Jason Mraz - I'm Yours</body></html>

我想阅读该部分并将其传递给div ... 我尝试了几种方法,并尝试从stackoverflow中提取一些建议,但我认为它很有用......

我总是收到错误警告,并且没有针对result1 var的警告,而且resultSpan没有从html页面的正文中获取文本

2 个答案:

答案 0 :(得分:1)

您的问题称为跨域请求。 JavaScript无权从其他域加载内容。

以下是一些信息:Cross domain ajax request

建议,开发一些服务器页面,对该资源执行Web请求, 并返回如下内容:

$.ajax({url: 'mypage.php?resource=http://server.com/page.html' ... });

我认为这种技术称为Web代理,可以帮助您克服安全性 限制javascript执行您尝试执行的操作的政策。

如果您可以使用PHP,可以在mypage.php中编写类似的内容:

<?php
   echo file_get_contents($_GET['resource']); //resource is the query string param.
?>

这是一个简单的服务器页面,它接收查询字符串参数“url”并返回 结果还给你。

因为您可以调用域名的本地页面,所以您不会遇到Ajax交叉请求问题。

答案 1 :(得分:0)

如果您收到错误警报,则ajax请求失败。确保您的ajax页面确实存在并且正在通过直接转到它来工作。另外,请确保设置数据类型,如果您只是获取文本,请使用

$.ajax({
 type: 'GET',
 url: 'http://sc3.******/7.html', 
 dataType: "text" .....

如果您仍然遇到麻烦,请在您直接浏览到该ajax页面时发布输出http://sc3.******/7.html