1.我们以AJAX的方式进行访问本地文件
Ext.Ajax.request({
url : "data/ext-jsb2.txt",
success : function(xhr) {
console.log(xhr.responseText);
},
failure : function(xhr) {
console.log("Error: " + xhr.statusText);
}
}); var bookStore = Ext.create("Ext.data.Store", {
fields : [ "title", "author", "price" ],
data : {
library : [ {
title : "Zend Framework",
author : "Zend",
price : 49.99
}, {
title : "Beginning F#",
author : "Robert Pickering",
price : 44.99
}, {
title : "Pro Hadoop",
author : "Jason Venner",
price : 39.99
} ]
},
proxy : {
type : "memory",
reader : {
type : "json",
root : "library"
}
}
});
bookStore.each(function(record){
console.log(record.get("title") + ", " + record.get("author") + ", " + record.get("price"));
});
3.我们从一个存有json数据的文件中读出来转换为我们自己定义的model。
json文件:countries.txt
{
"countriesInEurope" : [
{"name":"Spain","capital":"Madrid"},
{"name":"France","capital":"Paris"},
{"name":"UK","capital":"London"},
{"name":"Denmark","capital":"Copenhagen"}
]
}Ext.onReady(function() {
/********* AJAX PROXY *********/
Ext.define("Country", {
extend: "Ext.data.Model",
fields: ["name", "capital"]
});
var ajaxProxy = Ext.create("Ext.data.proxy.Ajax", {
url: "data/countries.txt",
model: "Country",
reader: {
type: "json",
root: "countriesInEurope"
}
});
/* read */
var readOperation = Ext.create("Ext.data.Operation", {
action: "read"//read create destrory update
});
ajaxProxy.read(readOperation, function(src) {
var recordsArray = src.getRecords();
for(var i=0; i<recordsArray.length; i++) {
var record = recordsArray[i];
console.log(record.get("name") + ", " + record.get("capital"));
}
});
});
4.本地AJAX,封装为model,存于store
本地servlet返回的json数据
{
"results": [
{
"name": "kute",
"latest": "beijing"
},
{
"name": "why",
"latest": "nanyang"
}
]
}protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
response.setContentType("application/json; charset=utf-8");
String json = "{\"results\":[{\"name\": \"kute\", \"latest\": \"beijing\"}, {\"name\": \"why\", \"latest\": \"nanyang\"}]}";
System.out.println(json);
writer.write(json);
}/**
* 本地AJAX
* 请求到的json封装为model,并存于store
*/
Ext.onReady(function() {
Ext.define("Book", {
extend : "Ext.data.Model",
fields: ["name", "latest"]
});
var ajaxStore = Ext.create("Ext.data.Store", {
model: "Book",
proxy : {
type : "ajax",
url : "JsonServlet",
reader : {
type : "json",
root : "results",
}
}
});
/**
* records: 返回的数据
* options:
* success: 获取是否成功
*/
ajaxStore.load({
callback : function(records, options, success) {
if (success) {
for (var i = 0; i < records.length; i++) {
console.log(records[i].get("name") + ", " + records[i].get("latest"));
}
}
}
});
});
在firebug中查看请求url:
http://localhost:8080/orderwhy/JsonServlet?_dc=1397900046494&page=1&start=0&limit=25
5.本地以jsonp的形式进行AJAX访问,封装为model,存于store
本地servlet返回的数据:
Ext.data.JsonP.callback1(
{
"results": [
{
"name": "kute",
"latest": "beijing"
},
{
"name": "why",
"latest": "nanyang"
}
]
}
)protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
String callback = request.getParameter("callback");
if(null != callback && !"".equals(callback)) {
response.setContentType("application/json; charset=utf-8");
String json = "{\"results\":[{\"name\": \"kute\", \"latest\": \"beijing\"}, {\"name\": \"why\", \"latest\": \"nanyang\"}]}";
String re = callback + "(" + json + ")";
System.out.println(re);
writer.write(re);
}
}/**
* 跨域AJAX
* 请求到的json封装为model,并存于store
*/
Ext.onReady(function() {
Ext.define("Book", {
extend : "Ext.data.Model",
fields: ["name", "latest"]
});
var ajaxStore = Ext.create("Ext.data.Store", {
model: "Book",
proxy : {
type : "jsonp",
url : "JsonServlet",
reader : {
type : "json",
root : "results",
},
}
});
/**
* records: 返回的数据
* options:
* success: 获取是否成功
*/
ajaxStore.load({
callback : function(records, options, success) {
if (success) {
for (var i = 0; i < records.length; i++) {
console.log(records[i].get("name") + ", " + records[i].get("latest"));
}
}
}
});
});http://localhost:8080/orderwhy/JsonServlet?_dc=1397899157107&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1
测试数据:http://api.cdnjs.com/libraries
/**
* 跨域AJAX
* 请求到的json封装为model,并存于store
*/
Ext.onReady(function() {
Ext.define("Book", {
extend : "Ext.data.Model",
fields : [ {
name : "nameJ",
mappping : "name"
}, {
name : "latestJ",
mapping : "latest"
} ]
});
var ajaxStore = Ext.create("Ext.data.Store", {
model: "Book",
proxy : {
type : "jsonp",
url : "http://api.cdnjs.com/libraries",
reader : {
type : "json",
root : "results",
},
cacheString: "myCacheKey",
extraParams: {
param1: "value1",
param2: "value2"
},
noCache: true
}
});
/**
* records: 返回的数据
* options:
* success: 获取是否成功
*/
ajaxStore.load({
callback : function(records, options, success) {
if (success) {
for (var i = 0; i < records.length; i++) {
console.log(records[i].get("nameJ") + ", " + records[i].get("latestJ"));
}
}
}
});
});http://api.cdnjs.com/libraries?myCacheKey=1397899614316?m1=value1?m2=value2&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1
ExtJS cross domain AJAX,布布扣,bubuko.com
原文:http://blog.csdn.net/kutejava/article/details/24104803