我是sencha touch2的新手,我想在sencha touch2中使用外部Web服务。我已为此原因编写代码,显示警告消息无效!在控制台中给出错误,这样XMLHttpRequest无法加载http://localhost/SLS.BRND.Services/Service1.asmx/Helloworld?_dc=1336466078991&method=Helloworld&format=json。
请帮我解决问题所在。谢谢原则http://localhost:49692不被允许 访问控制允许来源。 app / view / Blog.js?_dc = 1336466047687:27Response状态: - 0
这是我的代码: -
Ext.define("GS.view.Blog", {
extend: 'Ext.navigation.View',
xtype: 'blog',
config: {
title: 'WebService',
scrollable: true,
items: [
{
xtype: 'button',
text: 'Press Me',
height: 40,
width: 200,
listeners: {
tap: function () {
// alert("Hi Welcome To Sencha");
Ext.Ajax.request({
method: 'GET',
url: 'http://localhost/SLS.BRND.Services/Service1.asmx/Helloworld',
params: { method: 'Helloworld', format: 'json' },
success: function (response, request) {
alert('Working!')
alert(response.responseText)
console.log('Response:-' + response.responseText)
},
failure: function (response, request) {
alert('Not working!')
console.log('Response Status:- ' + response.status)
}
});
}
}
}
]
}
});
答案 0 :(得分:0)
您可以使用eval函数将纯文本转换为JSON数据。
var newObject=eval('('+response.responseText+')');
答案 1 :(得分:0)
试试此代码
Ext.data.JsonP.request({
url: 'http://localhost/SLS.BRND.Services/Service1.asmx/Helloworld',
params: { method: 'Helloworld', format: 'json' },
success: function (response) {
alert('Working!')
console.log(response);
},
failure: function (response) {
alert('Not working!')
console.log(response);
}
});
答案 2 :(得分:0)
我想,我找到了解决问题的方法。
首先,请阅读Nicholas C. Zakas撰写的关于Cross-domain Ajax with Cross-Origin Resource Sharing的优秀文章。它清楚地解释了这个跨域跨域资源共享问题。
因此,在您的情况下,您需要发出JSONP请求。
JSONP或" JSON with padding"是对基本JSON数据的补充 格式,允许页面请求的使用模式等等 有意义地使用来自主服务器以外的服务器的JSON。
JSONP is an alternative to a more recent method called Cross-Origin Resource Sharing
。
您需要做的就是进行Ext.util.JSONP.request()
这样的呼叫,
Ext.util.JSONP.request({
url: 'http://localhost/SLS.BRND.Services/Service1.asmx/Helloworld',
params: {
method: 'Helloworld',
format: 'json',
callback: 'callback',
},
success: function (response) {
alert('Working!')
console.log(response);
},
failure: function (response) {
alert('Not working!')
console.log(response);
}
});
现在应该可以了!