【问题标题】:Load a portion of an HTML page with $.AJAX and pass the value to a <span>使用 $.AJAX 加载 HTML 页面的一部分并将值传递给 <span>
【发布时间】:2014-01-02 01:37:04
【问题描述】:

这是我从服务器检索 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 页面的正文中获取文本没有警报

【问题讨论】:

  • 我忘了说错误是:[object Object]
  • 看起来问题是服务器没有正确响应。如果$.ajax 没有在响应中看到它要查找的内容,您将永远不会调用success 回调。
  • 使用 console.log() 代替警报。浏览器中的控制台为您提供比警报更多的信息。你可以调试你的错误对象

标签: jquery html ajax


【解决方案1】:

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

这里有一些信息:Cross domain ajax request

建议,开发一些服务器页面来执行对该资源的 Web 请求, 并返回类似这样的内容:

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

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

如果你会使用 PHP,你可以在你的 mypage.php 中写这样的东西:

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

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

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

【讨论】:

  • 您好 Joao .. 感谢您的回答... 我不确定这是否是跨域问题 您能否详细说明如何使用您的建议 ..???提前致谢
  • @colossusr 你的网站在 PHP 上运行吗?
  • 没有它的html和jquery
  • @colossusr 是否在 apache 网络服务器上运行 php?
  • 对不起...在 Apache 中是的
【解决方案2】:

如果您收到错误警报,则 ajax 请求失败。确保您的 ajax 页面确实存在并且可以直接访问它。另外,请确保您设置了数据类型,如果您只是获取文本,请使用

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

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

【讨论】:

  • Ajax req 失败是的.. 我不知道为什么......该页面存在并且它在浏览器上工作正常,并给出类似“8,1,22,50,7,128,Toto - 非洲”
  • 逗号分隔值不是 ajax 请求通常期望的格式之一。确保你有 dataType: "text" 像我说的那样被发送到 $.ajax 函数。
  • Html 它不是为 html 页面发送的正确类型?我所有其他使用 json 类型的 ajax req 都可以正常工作
猜你喜欢
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多