JQuery跨域加载JSON数据或HTML。

前提:有时候需要在网页上,加载另一个网站上的数据。或者加载另一个网站上的一个页面。Js的Ajax请求不具备跨域功能,可以使用JQuery来实现。

网页端JS代码:


$(function () {
$.ajax({
type: "get",
async: false,
url: "http://localhost:13964/getpage.ashx?callback=?",//服务端URL,该URL返回一段JS数据。如需返回HTML,只需把HTML组织成JSON即可,比如{"html":"<html></html>"}
dataType: "jsonp",//表示该请求为跨域的JSOP请求
jsonp: "htmlcall",//作用未知。随便填,但也能正常执行
jsonpCallback: "htmlcallback",//该值会把URL中的callback参数值替换,比如会把callback=?替换成callback=htmlcallback
success: function (json) {
$(json.selector).append(json.html);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(‘fail‘);
alert(textStatus);
alert(errorThrown);
}
});
});

服务端代码:


public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string html = string.Empty;
using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "/temppage.html", FileMode.OpenOrCreate))
{
using (StreamReader sr = new StreamReader(fs))
{
html = sr.ReadToEnd();
}
}

JavaScriptSerializer jss = new JavaScriptSerializer();
Jsonp jsp = new Jsonp();
jsp.html = html;
string json = jss.Serialize(jsp);
//这里需要注意的是,JSONP要返回的并不是标准的JSON格式,而是下面这样的一个格式
//callbackname(json) 其中callbackname是从JS端传来的参数。json是JSON数据,括号也不能少。
string callback = context.Request["callback"];
context.Response.Write(callback + "(" + json + ")");

}
public class Jsonp
{
public string html { get; set; }
public string selector = "body";
}

JQuery跨域加载JSON数据或HTML。,布布扣,bubuko.com

时间: 2024-08-24 06:31:46

JQuery跨域加载JSON数据或HTML。的相关文章

hive加载json数据解决方案

hive官方并不支持json格式的数据加载,默认支持csv格式文件加载,如何在不依赖外部jar包的情况下实现json数据格式解析,本编博客着重介绍此问题解决方案 首先创建元数据表: create EXTERNAL table access_log (content string) row format delimited fields terminated by '\t' STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInpu

chrome浏览器下用jQuery的load函数来跨域加载页面,响应状态status为(canceled)是什么情况? JSON和JSONP,也许你会豁然开朗,含jQuery用例

http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 问题来源:http://q.cnblogs.com/q/63123/ 问题出现的环境: 1:两个domain相同端口号不同的域名. 2:MVC4.0框架 3:从一个域名下用  jQuery.load("另一个域名下的页面"): 4:响应失败 : 响应状态status为(canceled) 请问这是什么情况呢 ?  我在IE下就没问题,可以

jQuery $.ajax跨域-JSONP获取JSON数据(转载)

Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该

跨域加载脚本或页面获取内容

$.extend({     /**     * 跨域装载JS脚本,获取页面窗口对象,从而获得DOM内容     * @param string url 需要读取的脚本地址     * @param function callback 回调函数,参数为载入后的窗口win对象     * @param string charset 指定字符编码     */     'crossGetScript':function(url,callback,charset){                  

Echarts ajax动态加载json数据

后台php写的,给前台准备好json格式数据 public function actionGetOffline(){ $userid = Yii::$app->user->identity->user_id; $connection = Yii::$app->db; $command = $connection->createCommand("SELECT proc_phase_id from tb_pro where user_id like '%$userid%

jquery.jqgrid 重新加载表格数据

〇.目的 select下拉框选择选择某选项之后,DataGrid数据表格也能随之变动. 一.使用的技术 1.后 Java.Spring MVC 2.前 JQuery-select2,jquery.jqgrid 二.代码-前 1 下拉框 2 <#form:select id="contractId" path="contractId" items="${contractList}" itemLabel="contractCode&q

dojo 加载Json数据

1.今天研究了dojo datagrid加载WebService后台传上来的数据.研究来研究去发现他不是很难.用谷歌多调试一下就好了. 2.看很多例子,这个例子能够更好的帮我解决问题:https://dojotoolkit.org/documentation/tutorials/1.10/dojo_data/index.html 往下滑动页面会看到类似于下面例子的截图: 3.框架都好说,把字段对应上问题不大,主要是数据.我开始是直接将WebService传出来的JSON数据传入给Memory的d

vue通过ajax加载json数据

HTML <ul id="Hanapp"> <li class="styVue" v-for="item in actList"> <a class="img_li" :href="item.href"></a> <img :src="item.img" alt="" /> <span class=&q

MVC4中EasyUI Tree异步加载JSON数据生成树

  1,首先构造tree接受的格式化数据结构MODEL /// <summary> /// 定义EasyUI树的相关数据,方便控制器生成Json数据进行传递 /// </summary> // [DataContract] [Serializable] public class EasyTreeData { /// <summary> /// ID /// </summary> //  [DataMember] public string id { get;