gpt4 book ai didi

php - 在ajax内部调用ajax

转载 作者:行者123 更新时间:2023-12-01 03:19:09 25 4
gpt4 key购买 nike

这是我来这里的第一天,也是我的第一个问题,如果我的问题对于这个平台来说非常琐碎,希望您能原谅我。

我正在尝试在ajax内部调用ajax,一个ajax调用将调用一个 Controller 操作,其中它将在数据库中插入一条记录,第一个ajax调用的操作是

public function createAction(Request $request){
if ($request->isXmlHttpRequest()) {
$name = $request->get("gname");
$description = $request->get("desc");
$portfolio_id = $request->get("PID");
$portfolio = $this->getDoctrine()
->getRepository('MunichInnovationGroupPatentBundle:PmPortfolios')
->find($portfolio_id);
$portfolio_group = new PmPatentgroups();
$portfolio_group->setName($name);
$portfolio_group->setDescription($description);
$portfolio_group->setPortfolio($portfolio);
$portfolio_group->setOrder(1000000);
$portfolio_group->setIs_deleted(0);
$em = $this->getDoctrine()->getEntityManager();
$em->persist($portfolio_group);
$em->flush();
$msg = 'true';
}
echo $msg;
return new Response();
}

第二个ajax调用将获取第一个ajax调用插入的更新数据,此调用的操作是

public function getgroupsAction(Request $request){
if ($request->isXmlHttpRequest()) {

$id = $request->get("PID");
$em = $this->getDoctrine()->getEntityManager();
$portfolio_groups = $em->getRepository('MunichInnovationGroupPatentBundle:PmPatentgroups')
->getpatentgroups($id);
echo json_encode($portfolio_groups);
return new Response();
}
}

我的JQuery如下

 $.ajax({
type: 'POST',
url: url,
data: data,
success: function(data) {
if(data == "true") {
$("#new-group").fadeOut("fast", function(){
$(this).before("<strong>Success! Your Portfolio Group is created Successfully.</strong>");
setTimeout("$.fancybox.close()", 3000);
});
$.ajax({
type: 'POST',
url: getgroups,
data: data,
success: function(data)
{
var myArray = JSON.parse(data);
var options = $("#portfolio-groups");
for(var i = 0; i < myArray.length; i++)
{
options.append($("<option />").val(myArray[i].id).text(myArray[i].name));
}
}
});
}
}
});

我在第一个ajax成功的情况下调用第二个ajax,以确保第一个ajax成功完成,但第二个ajax调用没有获取更新的数据。

如何确保第一个ajax完成后调用第二个ajax,并且我也能获取最近插入的数据

谢谢

我的解决方案仅使用一次 ajax 调用

在进行插入的创建操作中,插入后立即获取投资组合的所有组,并返回 json_encode($portfolio_groups);

JQuery 内部

 $.ajax({
type: 'POST',
url: url,
data: data,
success: function(data) {
$("#new-group").fadeOut("fast", function(){
$(this).before("<strong>Success! Your Portfolio Group is created Successfully.</strong>");
setTimeout("$.fancybox.close()", 3000);
});
var myArray = JSON.parse(data);
var options = $("#portfolio-groups");
for(var i = 0; i < myArray.length; i++)
{
options.append($("<option />").val(myArray[i].id).text(myArray[i].name));
}
}
});

最佳答案

我认为问题可能是你有很多变量名称“数据”。在第二个 ajax 调用中,发送的数据将始终为“true”,但我怀疑您想发送其他内容。我会给它们起独特的名字,让事情变得更清晰,看看会发生什么。

关于php - 在ajax内部调用ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com