繁体   English   中英

angularjs和symfony2之间的Ajax Post(注意:未定义索引)

[英]Ajax Post between angularjs and symfony2 (Notice: Undefined index)

我对symfony2 php框架非常陌生,但我知道它的MVC用于后端。 我正在尝试创建一个存储在数据库中的表单,然后将一封电子邮件发送给用户,该信息与他/她在表单中键入的信息相同。 为此,我在symfony2框架中使用了学说,swiftmailer和实体。 当我使用<form method ='post'action ='saveIndex'> </ form>时,它工作得很好,但是当我尝试实现angularjs的AJAX发布数据时,我得到了通知:未定义索引错误。

HTML(在树枝模板中):

<form class="productForm">
<div class="inputs" style="float: left">
<input type="text" name="productId" data-ng-model="signup.user.productId"/>
<input type="text" name="firstName" data-ng-model="signup.user.firstName"/>
<input type="text" name="lastName" data-ng-model="signup.user.lastName"/>
<input type="email" name="email" data-ng-model="signup.user.email"/>
<input type="text" name="price" data-ng-model="signup.user.price"/>
<input type="text" name="timeStamp" data-ng-model="signup.user.time"/>
<textarea name="comments" data-ng-model="signup.user.comments"></textarea>
<button type="submit" name="submit" class="btn btn-primary" ng- click="submit(signup.user)">Submit Request</button>
</div>

</div>
</form>

app.js:

myApp.controller('mainController',[
    '$scope',
    '$location',
    '$http',
    '$window',
    '$rootScope',
    function($scope, $location, $http, $window, $rootScope){
            $scope.submit = function (user) {
                    $http({
                        method: 'POST',
                        url: 'saveIndex',
                        data: $scope.signup
                    })
                    .success(function(data, status){
                        $log.warn(data, status);  //remove for production
                        $location.path('success');

                    })
                    .error(function(data, status){
                        $log.warn(data, status); //remove for production
                    });
            }
    }
]);

symfony2控制器:

// Save Information
public function saveIndexAction(){
    $post = new Post();                  // Call to entity named Post
    $request = $this->get('request');
    $params = $request->request->all();
    $session = $this->get('session');
    $this->saveIndex(
        $params['productId'],           <- GETTING UNDEFINED INDEX ERROR
        $params['firstName'],
        $params['lastName'],
        $params['email'],
        $params['price'],
        $params['timeStamp'],
        $params['comments'],
        $session
    );

    $post->setProductId($params['productId']);
    $post->setFirstName($params['firstName']);
    $post->setLastName($params['lastName']);
    $post->setEmail($params['email']);
    $post->setPrice($params['price']);
    $post->setTimeStamp($params['timeStamp']);
    $post->setComments($params['comments']);

    // Store information in the database
    $em = $this->getDoctrine()->getManager();
    $em->persist($post);
    $em->flush();

    // Send the email
    $this->mailAction
        (
            $post->getId(),
            $params['productId'],
            $params['firstName'],
            $params['lastName'],
            $params['email'],
            $params['price'],
            $params['timeStamp'],
            $params['comments']
        );

    // Return the response
    //return new Response('Info Submitted'.$post->getId());

    $return=json_encode($post);//json encode the array
    return new Response($return,200,array('Content-Type'=>'application/json'));//make sure it has the correct content type
}

我不知道如何使用symfony 2控制器进行AJAX POST,并将响应返回给Angularjs以执行客户端路由。 请任何帮助表示赞赏。 谢谢。

因此,在var_dump($ params)上,我发现输出是未定义的数组(大小= 0)。

因此,我包括以下代码:

protected function getRequestJson(){
    $params = null;
    $content = $this->get("request")->getContent();
    if (!empty($content))
    {
        $params = json_decode($content, true);
    }
    return $params;
}


public function saveIndexAction(){
    $post = new Post();

    $signup_params = $this->getRequestJson();

    //flatten signup parameters
    $params = array();
    foreach ($signup_params as $p) {
        if (is_array($p)) {
            foreach($p as $key=>$val) {
                $params[$key]=$val;
            }
        }
    }
}

而且有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM