javascript - 从JS发送数据到Controller中的函数,并从函数中获取结果

标签 javascript php jquery symfony

我需要帮助,我从昨天起就陷入了困境,问题是我有一个 numberInput 我使用 jquery 自动完成功能帮助我选择用户的订阅号。 使用该号码,我想获取用户的全名并将其显示在 Twig 上。 一旦我的输入发生变化,我将调用 JS 函数 getInfoOfInput(),这些是我使用的 JS 函数:

function getInfoOfInput()
    {
        var tutoreSelectionne = document.getElementById("numAdherent");
        var tutore = tutoreSelectionne.value;
        //alert(tutoreSelectionne.value);
        recupName(tutore);

    }
    function recupName(tutoreSelectionne) {
        var DATA = {tutoreSelectionne: tutoreSelectionne};
        var request = $.ajax({
            type: "POST",
            url: "{{ path('paces_statistique_default_getnometprenomtutore') }}",
            data: DATA,
            success: function(data){
                $('#name').html(data);
            }
        });
        return false;

    }

这是我的 Controller 中的函数:

  /**
 * get fullName
 * @Secure(roles="ROLE_ADMIN")
 * @Route("/recupFullName/")
 * @param Request $request La requête ajax qui envoie le numAd
 * @return Response $fullnam
 */
public function getNomEtPrenomTutore($request){
    $em = $this->getDoctrine()->getManager();
    $tutoRepo = $em->getRepository(Tutore::class);
    if ($request->isXmlHttpRequest()) {
        $numTutore = $request->request->get('tutoreSelectionne');
        $tutore = $tutoRepo->findOneBy(['username' => $numTutore]);
        $nom = $tutore->getNom();
        $prenom = $tutore->getPrenom();
        $fullName = "$nom $prenom";
        return $this->render("PACESStatistiqueBundle:Default:index.html.twig", array('fullName'=>$fullName));
    }
}

PS:“用户名”是用户的订阅号^^ 我知道用这个名字不好。

我在 Twig 上的输入:

<div class="ui-autocomplete-input">
<input type="number" id="numAdherent" value="" onchange="getInfoOfInput();"  onkeyup="this.onchange();"  oninput="this.onchange();" onautocomplete="this.onchange();">
</div>

当我改变它时,我用它来覆盖输入的值

// INPUT VALUE OVERRIDE
    $(function () {

        {% if is_granted('ROLE_ADMIN') %}
        $('td input[id^=numAdherent]').each(
                function (){
                    $(this).on("change paste keyup", function()
                    {$(this).attr('value', $(this).val())})
                }
        );
        {% endif %}


    });

这是我在 JS 中使用“Inspect Element”得到的错误

jquery-1.11.3.min.js:5 POST http://localhost:8000/recupFullName/    500(Internal Server Error)
send @ jquery-1.11.3.min.js:5
ajax @ jquery-1.11.3.min.js:5
recupName @ vueStatistique:231
getInfoOfInput @ vueStatistique:226
onchange @ vueStatistique:276
oninput @ vueStatistique:276

预先感谢您能给我的任何帮助:)

最佳答案

内部服务器错误通常意味着,您的 Controller 操作有问题。

$tutore = $tutoRepo->findOneBy(['username' => $numTutore]);

这行可能是问题所在。对我来说,username 听起来不像一个数字。这条线真的正确吗?

编辑: 检查错误信息后,解决方法如下: 改变

public function getNomEtPrenomTutore($request){

public function getNomEtPrenomTutore(Request $request){

并确保您实际导入了 Request 类。

关于javascript - 从JS发送数据到Controller中的函数,并从函数中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39221871/

相关文章:

php - 按钮选择要使用的样式表

javascript - 为什么jQuery或诸如getElementById之类的DOM方法找不到元素?

javascript - jQuery 函数用 td 内的按钮更改 td 值

javascript - 是否可以将 HTML 重定向到 javascript 函数?

php - 如何用包含JS的PHP调用外部服务器页面?

php - 显示 jquery 验证错误消息,但正在提交表单

带有 ASP.NET MVC ActionResult 的 jQuery 可排序 .toArray

javascript - 获取之前的 URL 并在 Javascript 中显示在页面上

javascript - node.js csurf 无效的 csrf token

php - 是否可以根据一个值对所有行进行计数,并获得计数最大的列名(mysql)?