为了账号安全,请及时绑定邮箱和手机立即绑定

Symfony 3.4 如何将 Javascript 数据传递给控制器​​?

Symfony 3.4 如何将 Javascript 数据传递给控制器​​?

有只小跳蛙 2022-01-07 13:22:04
我想在数据库中存储一个对象,其中包含动态内容。我有一个输入字段,人们可以在其中写文本。我希望输入字段的内容是对象的标题。我可以通过 Javascript 获取内容并通过控制器保存对象。但我不知道如何将数据从 Javascript 传递到控制器。这是我已经尝试过的:Javascript://Content I need to storevar outputOfInputField = document.getElementById("inputCategory").value;//Ajax call with JSON that I think I need for pass data to controller.$.ajax({   url : '/createcategory',   type: "POST",   data: {      'output': outputOfInputField   },   success : function (data) {      console.log("SUCCES" + data);   },   error   : function () {      console.log("ERROR");   }});控制器:<?phpnamespace AppBundle\Controller;use Symfony\Bundle\FrameworkBundle\Controller\Controller;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\Response;use AppBundle\Entity\User as User;use Appbundle\Entity\Category as Category;class HomePageController extends Controller{    /**     * @Route("/", name="homepage")     */    public function getData() {       ...//Not important    }    /**     *  @Route("/create-category", name="newCat")    */    public function createObject() {        //Tried to get the data from JSON file here, dont know what it does and also does not work, gives me an error... Saying i need a use on top of this controller. If I add it it still dont work.        // $form = $this->get('form.factory')->createBuilder(FormType::class)        //     ->add('ndf', CollectionType::class, array(        //         'entry_type' => NoteDeFraisType::class,        //         'label' => false,        //         'allow_add' => true,        //         'allow_delete' => true,        //     ))        //     ->getForm();        //     if ($request->isXMLHttpRequest()) {        //         $output = $request->request->get('output');        //         echo $output;        //         var_dump($output);        //         print_r($output);        //     }    }}
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我自己想出了解决方案:D。我不知道我的函数中需要 Request,现在也知道它的作用。


javascript 保持不变,控制器现在看起来像这样:



<?php


namespace AppBundle\Controller;


use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Symfony\Component\HttpFoundation\Request;

use Symfony\Component\Routing\Annotation\Route;

use Symfony\Component\HttpFoundation\Response;

use AppBundle\Entity\User as User;

use Appbundle\Entity\Category as Category;



class HomePageController extends Controller

{

    /**

     * @Route("/", name="homepage")

     */


    public function getData() {

       //...

    }


    /**

     *  @Route("/create-category", name="newCat")

    */

    public function createCategory(Request $request) {

        // dump($request);

        // dump($request->request->get('output'));


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


        $category = $this->getDoctrine()

            ->getRepository('AppBundle:Category')

            ->findall();


        $category = new Category();

        $category->setTitle($output);


        $em = $this->getDoctrine()->getEntityManager();

        $em->persist($category);

        $em->flush();


        return new Response('Created product id '.$category->getId());

    }

}

我更改/添加的内容:


//Added Request $request

public function createCategory(Request $request) {

//Added line for getting the output of ajax/json post.

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

}


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信