これは私の最初の日であり、ここでの最初の質問です。私の質問がこのプラットフォームにとって非常に些細なことである場合は、ご容赦ください。
私は ajax 内で ajax を呼び出そうとしています. 1 つの ajax 呼び出しは 1 つのコトローラー アクションを呼び出します.このアクションではデータベースにレコードが挿入されます. 最初の 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();
}
2 番目の 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 の成功の中で 2 番目の ajax を呼び出していますが、2 番目の ajax 呼び出しは更新されたデータを取得していません。
最初の ajax の完了後に 2 番目の ajax が呼び出され、最近挿入されたデータも取得できるようにするにはどうすればよいですか
ありがとう
私の解決策 1つのajax呼び出しを使用するだけです
挿入が行われる create アクションで、挿入直後にポートフォリオのすべてのグループを取得し、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));
}
}
});