【问题标题】:splitting ajax post response to two divs将ajax发布响应拆分为两个div
【发布时间】:2021-04-09 15:29:03
【问题描述】:

我正在尝试为孩子们开发一个教程,其中我有一个问题和答案。我正在尝试使用如下两个 div 来完成此操作。有两个 div 的想法是让孩子们可以打印完整的问题和解决方案或单击清除解决方案,并打印问题仅供以后练习自行解决。我正在尝试同时使用乳胶。如果我在 2 个文件中发出两个 ajax 请求,例如带有问题响应的 CALC_Q.PHP 和带有回答响应的 CALC_A.php,我已经能够完成,但我确信我可以在一个文件中执行一个 Ajax 请求,同样可以节省一些时间,并使应用程序运行得更快。如果问题和答案在同一个 div 中,这很容易,但是当我单击清除解决方案时,它会删除我不想要的问题和答案(因为它们将在同一个 div 中)。我希望问题在清除解决方案后保持可见。这是一个必须或不会问的问题。页面首次加载时问题将不可见(我知道这一点)。单击计算后将出现问题和答案,并且问题将保持可见,直到页面关闭

我确定我在响应 CALC.php 中的两个 div 或 json 调用时做错了什么

<div id="question" class="col s12 m8 l6 noselect" style = "background-color: green;">
  <p id="ques"></p>
</div>
<div id="solution" class="col s12 m8 l6" style = "background-color: white;">
  <p id="result"></p>
</div>

function Calc()
{
$('#loader').css('visibility', 'visible');
ajaxRequest= $.ajax({
    url: 'CALC.php',
    type: 'post',
    data: { "num1": myvar1,
            "num2": myvar2
          },});
   
      ajaxRequest.done(function(response) {
         //$('#ques').text(response[q]);  //this didn't work
         //$('#result').text(response[a]); // this didn't work

         $('#ques').text(response.q);   
         $('#result').text(response.a);  
         MathJax.Hub.Queue(['Typeset',MathJax.Hub,"result"], function() {$('#loader').css('visibility', 'hidden');});     
       }
}
   

在 CALC.php 中

   $number1 = $_POST['num1'];  
   $number2 = $_POST['num2']; 
   $final= $number1+$number2;

   $q = $a = array();
   $q = $a = null;

   $q.="Add these numbers".$number1." and ".$number2;
   $q.="<br> Show all work ";

   $a = "$ \\text{The answer is} $.$final;
   echo json_encode(array($q,$a));
   return;

【问题讨论】:

  • 您好,您返回的是 json,因此您需要对其进行解析,或者您可以设置 dataType: "json"

标签: html json ajax post call


【解决方案1】:

我最终解决了它如下。我有点接近不完全。它遗漏了我发现的一个重要陈述 只有在这个网站上的一个答案中陷入僵局,而不是在寻求帮助之前的其他答案中,这可能就是我错过它的原因。我肯定有一些语法错误。检查以下响应语句,Mathjax 语句也有 2 个变量:ques、result 和 CALC.php 中的关键头语句。我通过发回一个对象然后将内容拆分到我想要的任何地方的相应 div 来解决它:

 <div id="question" class="col s12 m8 l6 noselect" style = "background-color: green;">
     <p id="ques"></p>
 </div>
 <div id="solution" class="col s12 m8 l6" style = "background-color: white;">
     <p id="result"></p>
 </div>

    function Calc()
    {
      $('#loader').css('visibility', 'visible');
      ajaxRequest= $.ajax({
               url: 'CALC.php',
               type: 'post',
               data: { "num1": myvar1,
                       "num2": myvar2
                     },});

  ajaxRequest.done(function(response) {
       $('#ques').text(response.myquestion);   
       $('#result').text(response.myanswer);  
     MathJax.Hub.Queue(['Typeset',MathJax.Hub,"ques,result"], function() {$('#loader').css('visibility', 'hidden');});     
   }
  }    
}

我的其他文件 CALC.php

$number1 = $_POST['num1'];  
$number2 = $_POST['num2']; 
$final= $number1+$number2;

$q = $a = array();
$q = $a = null;

$q.="Add these numbers".$number1." and ".$number2;
$q.="<br> Show all work ";

$a = "$ \\text{The answer is} $.$final;
$final_answer = array("myquestion"=>$q,"myanswer"=>$a);
header("Content-Type: application/json");         //without this statement, it wouldn't work
echo json_encode($final_answer);

这个标题语句被死锁提到了。这是参考:

How to get multiple responses to a single ajax request in php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2015-09-18
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多