我需要帮助,我从昨天起就陷入了困境,问题是我有一个 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/