0

PHP サーバー側に値を渡そうとしています。私の店のコードは次のとおりです。

Ext.define('MyApp.store.MyArrayStore', {
    extend: 'Ext.data.Store',

    requires: [
        'MyApp.model.MyMOD'
    ],

    config: {
        autoLoad: true,
        model: 'MyApp.model.MyMOD',
        storeId: 'MyArrayStore',
        proxy: {
            type: 'ajax',
            actionMethods: 'POST',
            url: 'http://localhost/mm/app/php/res.php',
            reader: {
                type: 'json'
            }
        },
        listeners: [
            {
                fn: 'onArraystoreBeforeLoad',
                event: 'beforeload'
            }
        ]
    },

    onArraystoreBeforeLoad: function(store, operation, eOpts) {
        this.proxy.extraParams.VALUES1 = "pass some name here"; 
    }

});

PHP コード

<?php
error_reporting(E_ERROR | E_PARSE);

require_once 'conn.php'; // contains the connection

$v = $_POST['VALUES1'];
echo json_encode($v);

?>

返されるのはnullであり、ストアから渡した値 (つまりpass some name here) ではありません。

どうすればこれを修正できますか?

アップデート

Request URL:http://localhost/test/app/php/res.php?_dc=1373343459447
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:23
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost
Origin:http://localhost
Referer:http://localhost/test/app.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
X-Requested-With:XMLHttpRequest
Query String Parametersview sourceview URL encoded
_dc:1373343459447
Form Dataview sourceview URL encoded
page:1
start:0
limit:25
Response Headersview source
Connection:Keep-Alive
Content-Length:24
Content-Type:text/html
Date:Tue, 09 Jul 2013 04:17:39 GMT
Keep-Alive:timeout=5, max=96
Server:Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By:PHP/5.3.1
4

2 に答える 2

2

extraParams の設定方法を変更する必要があります。この場合、使用します

  store.getProxy().setExtraParam('VALUES1','pass some name here');

複数のパラメーターを送信する必要がある場合は、setExtraParams を使用します。

  var param = { VALUES1: 'param1', VALUES2 : 'param2'};
  store.getProxy().setExtraParams(param);

とても完全なストアコード

Ext.define('MyApp.store.MyArrayStore', {
    extend: 'Ext.data.Store',

    requires: [
        'MyApp.model.MyMOD'
    ],

    config: {
        autoLoad: true,
        model: 'MyApp.model.MyMOD',
        storeId: 'MyArrayStore',
        proxy: {
            type: 'ajax',
            actionMethods: 'POST',
            url: 'http://localhost/mm/app/php/res.php',
            reader: {
                type: 'json'
            }
        },
        listeners: [
            {
                fn: 'onArraystoreBeforeLoad',
                event: 'beforeload'
            }
        ]
    },

    onArraystoreBeforeLoad: function(store, operation, eOpts) {
        store.getProxy().setExtraParam('VALUES1 ','pass some name here');
    }

});
于 2013-07-08T17:17:08.927 に答える
1

this.proxy試してみる代わりにthis.getProxy()

この種のことには、コンソールが非常に便利だと思います。私自身のアプリで実行すると、Ext.getStore('MyStore').proxy;未定義Ext.getStore('MyStore').getProxy()になりますが、プロキシが取得されます。

コンソールを使用してください。私にとって、コンソールは API に次ぐ最も価値のある開発ツールです。

がんばれ、ブラッド

于 2013-07-08T16:27:47.787 に答える