0

我是 sencha touch2 的新手,我想在 sencha touch2 中使用外部 Web 服务。我为此编写了代码,显示警报消息不起作用!在控制台中给出这样的错误 XMLHttpRequest cannot load http://localhost/SLS.BRND.Services/Service1.asmx/Helloworld?_dc=1336466078991&method=Helloworld&format=json

Access-Control-Allow-Origin 不允许来源http://localhost:49692 。app/view/Blog.js?_dc=1336466047687:27响应状态:- 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)
                        }
                   });
                }
            }
          }
        ]
    }
});
4

3 回答 3

0

您可以使用 eval 函数将纯文本转换为 JSON 数据。

var newObject=eval('('+response.responseText+')');
于 2012-05-08T05:54:46.390 回答
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);
                    }
               });
于 2012-05-08T09:18:27.683 回答
0

我想,我想出了解决您问题的方法。

首先,阅读Nicholas C. Zakas的这篇关于跨域 Ajax 和跨域资源共享的优秀文章。它清楚地解释了这个Cross-domain Cross-Origin资源共享问题。

因此,在您的情况下,您需要发出JSONP请求。

JSONP 或“带填充的 JSON”是对基本 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);
     }
});

现在应该可以了!

于 2012-05-08T10:25:53.173 回答