由于浏览器安全的限制,XMLHttpReques只能调用本地的,本域名下的文件;一旦调用非本域名下的文件,就调用不到,返回个错误。

比如这段代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="jquery-1.5.1.js"></script>
    <script type="text/javascript">

$.ajax({
        url: "http://www.douban.com/feed/review/latest",
            type: "GET",
            dataType: 'xml',
            timeout: 1000,
            cache: false,
            error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("加载xml错误" + XMLHttpRequest.readyState);
            },
            success: function(xml) {
                alert("getIT");
                
            }
        })

</script>
</head>
<body>

</body>
</html>

执行的话会报错,加载xml错误0。

啥子意思呢?请允许我复制。

Jquery中AJAX参数详细列表:
error Function (默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。

function (XMLHttpRequest, textStatus, errorThrown) {// 通常情况下textStatus和errorThown只有其中一个有值 this; // the options for this ajax request}

一、error:function (XMLHttpRequest, textStatus, errorThrown)
{
}
(默 认: 自动判断 (xml 或 html)) 请求失败时调用时间。参数有以下三个:XMLHttpRequest 对象、错误信息、(可选)捕获的错误对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。

textStatus:

"timeout", "error", "notmodified" 和 "parsererror"。

二、error事件返回的第一个参数XMLHttpRequest有一些有用的信息:

XMLHttpRequest.readyState:

状态码

0 - (未初始化)还没有调用send()方法

1 - (载入)已调用send()方法,正在发送请求

2 - (载入完成)send()方法执行完成,已经接收到全部响应内容

3 - (交互)正在解析响应内容

4 - (完成)响应内容解析完成,可以在客户端调用了

-------------------------------------------------------复制结束

也就是说XMLHttpRequest还没开始send。但是Fiddler的结果是:

说明你请求的数据,服务器已经返回,但浏览器不允许XMLHttpRequest接收吧。但为什么XMLHttpRequest.readyState是0呢,没send呢,不懂,请教大家。

还有解决方案是,用$.getJSON,用JSONP,这两个要远程服务器支持才行。调用远程的JS文件,通过回发函数自己解析。并不普遍适用。

于是就,自己服务器访问远程xml文件,写到自己的文件并生成,给自己的网页前台JQuery调用就行。

就这么干,这是访问远程xml文件代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string url = @"http://www.douban.com/feed/review/latest";
        WebRequest req = WebRequest.Create(url);
        WebResponse rep = req.GetResponse();
        Stream webstream = rep.GetResponseStream();
        StreamReader sr = new StreamReader(webstream);
        string br = sr.ReadToEnd();
        Response.Write(br);
        Response.End();
    }
}

然后调用它:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="jquery-1.5.1.js"></script>
    <script type="text/javascript">

$.ajax({
        url: "Default2.aspx",
            type: "GET",
            dataType: 'xml',
            timeout: 1000,
            cache: false,
            error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("加载xml错误" + XMLHttpRequest.status);
            },
            success: function(xml) {
                alert("getIT");
                
            }
        })

</script>
</head>
<body>

</body>
</html>

//---------------------------------------针对评论里的JSONP例子,请再允许我复制

调用页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
<script type="text/javascript" src="jquery-1.5.1.js"></script>
    <script type="text/javascript">
    /*使用JSON
// This is our function to be called with JSON data
function showPrice(data) {
    alert("Symbol: " + data.symbol + ", Price: " + data.price);
}
var url = "ticker.js"; // URL of the external script
// this shows dynamic script insertion
var script = document.createElement('script');
script.setAttribute('src', url);

// load the script
document.getElementsByTagName('head')[0].appendChild(script); 
*/

//使用JSONP
        function showPrice(data) {
            alert("Symbol: " + data.symbol + ", Price: " + data.price);
        }
        
        $(function() {
            var url = "ticker.js";
            $.getJSON(url + "?callback=?", function(data) {
                alert("Symbol: " + data.symbol + ", Price: " + data.price);
            });
        });
        
    </script>

</head>
<body>
</body>
</html>

ticker.js文件

showPrice({ symbol: 'IBM', price: 91.42 });

应当这样使用的吧。。。。

转载于:https://www.cnblogs.com/samwu/archive/2011/07/21/2112905.html

跨域访问JQuery+.NET实现的一种思路,以及极简单Demo相关推荐

  1. Chrome浏览器设置跨域访问【新旧版本两种方式设置】

    一般我们在进行前后分离的项目 webapp 开发,或者 H5 移动 App 开发时,我们会使用 PC 端浏览器进行开发调试.但默认情况下 Ajax 请求无法跨域访问,请求时会报如下错误: XMLHtt ...

  2. ie8 jquery ajax 跨域访问,jQuery.Ajax IE8,9 无效(CORS跨域)

    今天在开发网站的时候,发现一个问题,$.ajax()在 IE8,9 浏览器不起作用,但 Chrome,Firefox ,360,IE10以上等浏览器却是可以的,网上资料很多,查询最后发现是 IE8,9 ...

  3. yii2 跨域请求配置_如何在SpringBoot应用中实现跨域访问资源和消息通信?

    允许跨域访问 CORS ( Cross Origin Resource Sharing,跨域资源共享)机制允许Web应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行.浏览器支持在API容器中 ...

  4. Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

    当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...

  5. JQuery实现Ajax跨域访问--Jsonp原理

    JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源策略). ...

  6. jQuery 跨域访问问题解决方法

    浏览器端跨域访问一直是个问题, 多数研发人员对待js的态度都是好了伤疤忘了疼,所以病发的时候,时不时地都要疼上一疼.记得很久以前使用iframe 加script domain 声明,yahoo js ...

  7. 普元EOS中, 子系统和portal不在同一个域中,使用jquery的jsonp来解决portal跨域访问

    转至元数据起始 [背景] 子系统和portal不在同一个域中且项目中要求不能使用nginx.apache等反向代理软件,故使用jsonp从代码角度解决ajax跨域问题 [实现思路] 通过jquery的 ...

  8. 使用jquery完成跨域访问

    jquery实现跨域访问有两种方式,一个是$.getJSON,一个是$.ajax,注意只有get请求才能实现跨域访问. 一.$.getJSON实现跨域访问 get.html: <!doctype ...

  9. jq跨域代理_用jQuery解决跨域访问

    浏览器端跨域访问一直是个问题, 多数研发人员对待js的态度都是好了伤疤忘了疼,所以病发的时候,时不时地都要疼上一疼.记得很久以前使用iframe 加script domain 声明,yahoo js ...

  10. jquery ajax跨域asp,jQuery跨域调用Asp.Net Web API

    Asp.Net Web API是一个轻量级的Web服务,当Web API和Web程序不是部署在同一域的时候,要使用jQuery来实现调用API的接口就存在跨域的问题.下面介绍两种方式来解决jQuery ...

最新文章

  1. MacOS系统升级后,IDEA的SVN不好用的问题
  2. html透明度_学好Web前端开发,必要了解的HTML+CSS的技巧有哪些
  3. OpenMP参考链接
  4. 深入浅出时序逻辑电路(1)
  5. Android studio的UI组件
  6. 什么是bcd码数据传输通讯_传输障碍| 数据通讯
  7. 试用到期_各大化妆品品牌试用装广告
  8. 免费讲座 再出江湖!
  9. 浅析 golang module
  10. [VBA]VBA编写的时光倒流软件
  11. 选择电子名片的优势及电子名片适用的行业,你知多少?
  12. 利用Python系统性爬取微博评论
  13. 控制工程中的数学建模(1)——二阶有源低通滤波器(之一)
  14. es6 嵌套数组循环_[js]从 ES3 到 ES6 教你如何数组去重
  15. 人再囧途之泰囧.BD高清1280国语中英双字 附下载地址
  16. facebook登录和分享
  17. NLP-文本处理:词形归一(Lemma)【英文】【把各种类型的词的变形都归为一个形式】【went->go;are->be】
  18. vray许可服务器信息无名,【1人回答】vray3.6无法获取许可-3D溜溜网
  19. 低分怎么上计算机专科学校,低分“首选”这四个专业,不仅给全家能争光,专科也能进国企...
  20. vijos1196吃糖果游戏

热门文章

  1. IDEA快速升级模块版本号
  2. 2019.02.12 bzoj3944: Sum(杜教筛)
  3. Docker 架构(二)【转】
  4. android中bundle的使用
  5. BZOJ2728 HNOI2012与非(并查集+数位dp)
  6. 微信jsapi开发教程全
  7. 1121 - Reverse the lights 思维题
  8. EasyUI常用控件禁用方法
  9. mac+ffmpeg+php,mac折腾安装ffmpeg小记
  10. Spark的简介和在大数据领域的地位