2013-07-08 71 views
0

我試圖將值傳遞給PHP服務器端。我的商店代碼如下;將Store中的值傳遞給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)的值。

我該如何糾正?

UPDATE

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 
+0

你有沒有檢查控制檯中是否有錯誤..因爲我的事情應該有一個錯誤.. – Viswa

+0

是的。錯誤是'Uncaught TypeError:無法讀取未定義的屬性'extraParams' –

回答

1

而不是this.proxy嘗試this.getProxy()

我發現控制檯對這類事情非常有用。在我自己的應用程序運行Ext.getStore('MyStore').proxy;讓我undefined而Ext.getStore('MyStore').getProxy()讓我的代理。

使用控制檯,對我來說它是接下來API最有價值的開發工具。

祝你好運,布拉德

+0

是的,我也試過你的方法,但我仍然收到錯誤:'MyJsonReader1無法讀取數據。 在瀏覽器中打開:http:// localhost ......'。 我認爲這是因爲PHP返回null(當我回應它的響應返回null)。所以我想''VALUES1'的值在PHP端沒有被選中。任何線索如何解決這個問題? –

+0

使用開發人員控制檯中的網絡選項卡查看實際正在傳遞的參數。 – bwags

+0

它似乎沒有得到發佈(通過)。 –

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

}); 
+0

我仍然收到一個錯誤:'MyJsonReader1無法讀取數據。 在瀏覽器中打開:http:// localhost ......'。原因是PHP返回null。所以我猜在PHP結束時沒有選擇VALUES1的值。任何線索? –

+0

它應該是'actionMethods'還是'actionMethod'? –