2013-07-09 3 views
0

Ext.Ajax.Request не работает на настольных веб-браузерах для меня. Он отлично работает на устройствах и на симуляторах xcode, но на настольных веб-браузерах он вызывает метод отказа. Вот код:Ext.Ajax.Request не работает в браузере

// send ajax request 
     Ext.Ajax.request({ 
      url: 'http://testapp.cloudapp.net/index.php/api/accounts/login/', 
      method: 'POST', 
      params: { 
       username: Ext.getCmp('username').getValue(), 
       password: Ext.getCmp('password').getValue() 
      }, 
      dataType: 'json', 
      success : function(response, request) { 
       if(response.responseText == true) { 
        Ext.Msg.alert('validated'); 

        // animate to wall view 
        Ext.Viewport.animateActiveItem(targetView, { type : 'fade' }); 

        //destroy Login and Register Views 
        var vwRegister = Ext.ComponentQuery.query('register')[0], 
         vwLogin = Ext.ComponentQuery.query('login')[0]; 

        setTimeout(function() { 
         vwRegister.destroy(); 
         vwLogin.destroy(); 
        }, 2000); 
       } 
       else { 
        Ext.Msg.alert('invalid user');  
       } 
      }, 

      failure: function(response, request) { 
       Ext.Msg.alert('error'); 
      } 
     }); 

Я не думаю, что это имеет какое-то отношение к «Same-Origin политики», потому что я попытался сделать то же самое с помощью функции JQuery в $ .ajax и он работал отлично.

+0

Да, это та же самая политика происхождения. Посмотрите на 'Ext.data.JSONP'. –

+0

Используйте локальный веб-сервер, такой как XAMPP –

ответ

1

Проверьте консоль отладки, скорее всего, вы увидите ошибку о той же политике происхождения.

Если ничего другого не попробуйте открыть хром с параметром --disable-web-security, чтобы узнать, помогает ли это.

См. this question для точного синтаксиса.

удачи, Брэд

+0

Это работает, но @Even Trimboli был прав, JSONP - это правильный способ сделать это, если у вас есть контроль над api. Я сожалел, что не использовал JSONP в своем приложении. – bwags

1

Хотя не особенно безопасным и не рекомендуется, можно также запускать браузеры, такие как Chrome в состоянии, которое отключает функции веб-безопасности, как же политику происхождения.

для Windows ...

chrome.exe --disable-web-security 

для Mac ...

Chrome.app --args --disable-web-security 

Поскольку я не особенно нравится с помощью терминала каждый раз, вы можете написать Баш скрипт, чтобы сделать это для вас, или использовать автомат на Mac.

Кроме того, убедитесь, что браузер еще не запущен, иначе это не сработает.

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