2012-05-08 4 views
0

Я новичок в sencha touch2, и я хочу использовать внешний веб-сервис в sencha touch2.I написал код для этой причины, показывая предупреждение msg не работает! в консоли, дающей ошибку, как этот XMLHttpRequest не может загрузить http://localhost/SLS.BRND.Services/Service1.asmx/Helloworld?_dc=1336466078991&method=Helloworld&format=json.Как использовать внешний webservice в sencha touch2

Origin http://localhost:49692 is not allowed by Access-Control-Allow-Origin. app/view/Blog.js?_dc=1336466047687:27Response Status:- 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

Попробуйте этот код

 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); 
        } 
       }); 
+0

Я использовал тот же код, что и вы отправили. Но я получаю такую ​​же ошибку в консоли, как Uncaught TypeError: Не могу вызвать метод «запрос» неопределенного. –

0

Вы можете использовать Eval функцию для преобразования обычного текста в данных JSON.

var newObject=eval('('+response.responseText+')'); 
+0

k.i не в состоянии потреблять веб-сервис..необходимость аварийного сообщения msg не подходит ... что такое pbm .. –

+0

любая ошибка u найденная в консоли? если да, позвольте мне показать ошибку. –

+0

ничего не отображается .... было пусто –

0

Я думаю, я понял, решение вашей проблемы.

Прежде всего, прочитайте эту замечательную статью на странице Cross-domain Ajax with Cross-Origin Resource Sharing Николая К. Закаса. В нем четко объясняется проблема совместного использования ресурсов Cross-domain Cross-Origin.

Итак, в вашем случае вам необходимо сделать запрос JSONP.

JSONP or "JSON with padding" is a complement to the base JSON data format, a usage pattern that allows a page to request and more meaningfully use JSON from a server other than the primary server.

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); 
    } 
}); 

и что должно работать!

+0

Я использовал тот же код, что и вы отправили, но он дает ошибку в консоли, как это _Uncaught TypeError: Невозможно вызвать метод «запрос» undefined_. Выше код не работает, можете ли вы мне сообщить, в чем проблема. Спасибо. –

+0

Обычно, когда ошибка имеет форму 'Can not call method 'X' undefined', это означает, что любой объект, который вы пытаетесь вызвать' X' from, не существует. Итак, убедитесь, что вы включили необходимые файлы, необходимые для запроса 'Ext.util.JSONP' ... –

+0

Я не понял, уже sencha touch, они предоставляют все необходимые файлы. вы можете дать мне решение этой ошибки консоли ** Неподготовлено TypeError: Невозможно вызвать метод «запрос» неопределенного **. что является проблемой при кодировании. –

Смежные вопросы