2014-07-17 74 views
0

问题: - 调用ajax请求并在html中写入文本。wordpress:在按钮中调用ajax点击

问题: - 第二次AJAX获取数据(在页面的源代码),但在div值不会尽管变化 - 当调用Ajax和在div成功 值写入第一次缓存:假。 - 我尝试生成随机数来很好地显示问题。

代码:

1 Ajax调用:

$("#Finish").click(function() { 
    $.ajax({ 
     type: 'POST', 
     async: true, 
     url: document.location.origin + "/air/ajaxCalls.php", 
     dataType: 'json', 
     cache: false, 
     data: { 
      ajaxType: "Finish", 
      examid: 1, 
      index: 2, 
      qid: <? php echo $currentquestion ?> , 
      ansid: $('#tags').val(), 
     }, 
     success: function (data) { 
      // alert("success"); 
      if (data) { 
       // alert(data.status); 
       // $("questiontext").html("next question"); 
       // alert("data"); 
       // alert('empty') 

       $('#tags').val(""); 

       document.getElementById('questiontext').innerHTML = "<p>" + "<?php echo mt_rand() . getQuesName($currentquestion) . rand(); ?>" + "</p>"; 
       document.getElementById('answerstext').innerHTML = "<?php getAnswers($currentquestion); ?>" 

       $("#questiontext").html("<?php echo mt_rand()?>"); 

       $('input[type="checkbox"]').on('change', function() { 
        $('input[type="checkbox"]').not(this).prop('checked', false); 
       }); 

       $('#check1').click(function() {}); 
       $('#choose1, #check1').click(function() { 
        $('#check1').click(); 
       }); 

       $('#check2').click(function() {}); 
       $('#choose2, #check2').click(function() { 
        $('#check2').click(); 
       }); 

       $('#check3').click(function() {}); 
       $('#choose3, #check3').click(function() { 
        $('#check3').click(); 
       }); 

       $('#check4').click(function() {}); 
       $('#choose4, #check4').click(function() { 
        $('#check4').click(); 
       }); 

       function Populate() { 
        vals = $('input[type="checkbox"]:checked').map(function() { 
         return this.value; 
        }).get().join(','); 
        // console.log(vals); 
        $('#tags').val(vals); 
       } 

       $('input[type="checkbox"]').on('change', function() { 
        Populate() 
       }).change(); 



       if (data.status == 1) { ///sucess 
        alert('answer inserted'); 
       } 

      } else { 
       alert("Error : Please try again"); 
       return false; 
       // no data found 
      } 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error : " + errorThrown); 
     } 
    }); 

}); 

2 - 接听电话:

if ($_POST['ajaxType'] == "Finish") { 
    echo json_encode(array("status" => 1)); 
} 

3-格(HTML)

<div id="questiontext"> 
    <p> 

    </p> 
</div> 
+1

为什么你不通过wordpress AJAX路由的任何原因? – Seth

+0

我搜索的例子与WordPress的AJAX做类似于我的工作,但我没有找到它。 (我需要让阿贾克斯更新div内容) – Sameh

回答

0

我有这个几天前完全相同的问题。问题是,在您的AJAX呼叫:

$.ajax({ 
    type: 'POST', 
    async: true, 
    url: document.location.origin + "/air/ajaxCalls.php", 
    dataType: 'json', 
    cache: false, 
    data: { 
     ajaxType: "Finish", 
     examid: 1, 
     index: 2, 
     qid: <? php echo $currentquestion ?> , 
     ansid: $('#tags').val(), 
    }, 

更改您的网址为主wordpress AJAX文件。通常可以在网站的/ wp-admin /文件夹中找到它。一旦你从

document.location.origin + "/air/ajaxCalls.php" 

URL更改为

../../wp-admin/admin-ajax.php 

进入您的主要功能文件,添加一个新的AJAX调用。例如,创建这样的事情:

add_action("wp_ajax_populate", "populate"); 

function(populate){ 
if (data) { 
      // alert(data.status); 
      // $("questiontext").html("next question"); 
      // alert("data"); 
      // alert('empty') 

      $('#tags').val(""); 

      document.getElementById('questiontext').innerHTML = "<p>" + "<?php echo mt_rand() . getQuesName($currentquestion) . rand(); ?>" + "</p>"; 
      document.getElementById('answerstext').innerHTML = "<?php getAnswers($currentquestion); ?>" 

      $("#questiontext").html("<?php echo mt_rand()?>"); 

      $('input[type="checkbox"]').on('change', function() { 
       $('input[type="checkbox"]').not(this).prop('checked', false); 
      }); 

      $('#check1').click(function() {}); 
      $('#choose1, #check1').click(function() { 
       $('#check1').click(); 
      }); 

      $('#check2').click(function() {}); 
      $('#choose2, #check2').click(function() { 
       $('#check2').click(); 
      }); 

      $('#check3').click(function() {}); 
      $('#choose3, #check3').click(function() { 
       $('#check3').click(); 
      }); 

      $('#check4').click(function() {}); 
      $('#choose4, #check4').click(function() { 
       $('#check4').click(); 
      }); 

      function Populate() { 
       vals = $('input[type="checkbox"]:checked').map(function() { 
        return this.value; 
       }).get().join(','); 
       // console.log(vals); 
       $('#tags').val(vals); 
      } 

      $('input[type="checkbox"]').on('change', function() { 
       Populate() 
      }).change(); 



      if (data.status == 1) { ///sucess 
       alert('answer inserted'); 
      } 

     } else { 
      alert("Error : Please try again"); 
      return false; 
      // no data found 
     } 
    }, 
} 

现在,你有你填入功能在你的functions.php文件,而不是你的jQuery文件。这使得你所有的AJAX调用都需要指定你想要执行的动作。这将增加到您的数据数组中。

希望这有助于一点,让我知道如果我可以澄清更多。

+0

问题仍然出现: 1-将URL更改为../../wp-admin/admin-ajax.php。 2 - 将函数放入admin-ajax.php。我不知道如何分开函数填充。 第一次弹出(“错误:请再试一次”) 我评论如果(数据),但问题仍然存在。 – Sameh

+0

“2 - 把功能放在admin-ajax.php” - 你需要把函数放在functions.php中,而不是admin-ajax.php 这是否解决了其余的错误?我不太明白你的意思。请详细说明一下。 – colinmcp