2014-07-17 76 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