2

Sencha Touch 2 を使用してアプリケーションを作成しています。Web からアクセスすると問題なく動作します。iPhone用にビルドし、URLをローカルURL(../services/myservice.php)からリモートURL(http://remoteurl.com/services/myservice.php)に変更したときに問題が発生しました

クロスドメイン エラーが発生し始めました。

**XMLHttpRequest cannot load http://example.com/services/userRegister.php?_dc=1336972603884. Origin http://localhost is not allowed by Access-Control-Allow-Origin.**

また、jsonp を使用してフォームを送信する方法があるかどうかお聞きしたいので、この問題はもうありません。

フォームのコードは次のとおりです。

Ext.define('RegistroMovil.view.Register',{
extend: 'Ext.form.Panel',
xtype: 'register',
requires:[
    'Ext.form.FieldSet',
    'Ext.form.Email'
],
config: {
    title: 'Register',
    iconCls: 'user',
    url: 'http://example.com/proys/congreso/services/userRegister.php',
    items: [
    ...

フォームを送信するボタンのコード:

{
            xtype: 'button',
            text: 'Register',
            handler: function(){
                this.up('register').submit({
                    success: function(f, a){
                        alert('Your id: ' + a.id);
                        f.reset();
                    }
                });
            }
        },

どうもありがとうございました!

4

1 に答える 1

1

クロスオリジン リソース共有ポリシーが原因で、上記のエラーが発生しています。

ボタンのtapイベントハンドラーでは、を使用できますが、同じエラーが発生する可能性もあります。submitExt.Ajax.request();

例えば

Ext.Ajax.request({
  values : paramValues // values from form fields..
  url: '.../test.php',

  success: function(response) {
    console.log(response.responseText);
  }

  failure: function(response) {
    console.log(response.responseText);
  }
});

Ext.util.JSONP.request()そのため、 form を処理するには an を記述した方がよいでしょうsubmit

実行中のページの元のドメインとは異なるドメインにあるページからデータを取得する場合は、同じ元のポリシーのため、このクラスを使用する必要があります。

例えば

Ext.util.JSONP.request({
      params: paramValues // values from form fields..
      url: '.../test.php',
      callbackKey: 'callback',
      scope: 'this',
      success: function(response) {
        console.log(response.responseText);
      }

      failure: function(response) {
        console.log(response.responseText);
      }
});
于 2012-05-14T05:09:17.487 に答える