2012-11-22 47 views
2

下面是我的問題。在Symfony2.1控制器我收到一個Ajax調用。如果我使用Request對象,我無法獲取發送的參數。如果我使用PHP _REQUEST對象,則會發現參數! 如果有問題,我可以確認請求是XHR。 這裏是我的代碼:Symfony2中的XmlHttpRequest

public function savedataAction(Request $request){ 
    if($request->isXmlHttpRequest()) 
    echo 'Ajax Call'; 

    $param1 = $request->request->get('myParam'); // Nothing is returned, but $request is obviosly not null 
    $param2 = $_REQUEST['myParam']; // The value is given 

    .... 
} 

任何想法?如果有幫助,請注意,AJAX調用是由文件上傳器jQuery插件Valums提供的。

回答

1

通常它:這裏

// retrieve GET and POST variables respectively 
$request->query->get('foo'); 
$request->request->get('bar', 'default value if bar does not exist'); 

看是fundamentels。

http://symfony.com/doc/current/book/http_fundamentals.html

編輯:在您的情況

$request當您從Symfony2的網站發送的形式不僅填補。 CSRF保護可能會阻止請求。

試試這個在您的控制器來獲取Request對象:

$request = $this->get('request'); 

http://symfony2forum.org/threads/5-Using-Symfony2-jQuery-and-Ajax

+0

行動,對不起!我在我的例子中寫錯了代碼......這是$ request-> request。我要糾正我的問題!但問題依然存在! – JeanValjean

+0

我編輯了我的答案。問題是,你必須以另一種方式訪問​​請求對象。當CSRF保護不是來自有效表單時,阻止外部請求。 – Stony

+0

我發現了這個問題。參數在$ request-> query-> get('myParam')中。我很確定使用的方法是POST而不是GET!真奇怪! – JeanValjean