2014-12-04 86 views
1

我可以找到很多類似的問題,但沒有什麼幫助,所以必須發佈我自己的這個問題的版本。WordPress的Ajax返回'0'

我有2個PHP文件:

  • playing.php(包含Web表單,併發送Ajax調用)
  • plug_search.php(的形式處理代碼)

之前我開始嘗試使用ajax,表單處理工作完美,查詢按預期工作,並根據搜索參數返回適當的結果。現在,我想使用ajax,所以結果返回到同一頁面,並且它始終返回'0'。我嘗試了(似乎)所能做的一切,排除了最可能的原因(不正確的函數/調用名稱) - 沒有運氣。感覺像一些非常簡單的東西丟失了,我懷疑問題出在函數的聲明中,但是看不到有什麼問題(看起來這個調用從來沒有在plug_search.php中達到處理函數)。我刪除了所有的查詢代碼,只是試圖返回一個簡單的字符串 - 仍然是'0'。 如果你能幫忙,我會很感激!

playing.php

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     function search(){ 
     var plug=$("#autocomplete-dynamic").val(); 
     var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>"; 
     if(plug!==""){ 
      $("#result").html(); 
      $.ajax({ 
       type: "GET", 
       url: ajaxurl, 
       data: { 
        action: 'ajax_return_search_results', 
        plug: 'country' 
       }, 
       success:function(data){ 
        alert(data); 
       } 
      }); 
     } 
     } 

     $("#button").click(function(){ 
     search(); 
     }); 

     $('#search').keyup(function(e) { 
     if(e.keyCode == 13) { 
      search(); 
     } 
     }); 
    }); 
</script> 

plug_search.php

<?php 

add_action('wp_ajax_ajax_return_search_results', 'myajax_return_search_results'); 
add_action('wp_ajax_nopriv_ajax_return_search_results', 'myajax_return_search_results'); 

function myajax_return_search_results() { 
    echo "Success"; 
    die(); 
} 

?> 

plug_search.php - 完整版

function myajax_return_search_results() { 

$value = $_GET['plug']; 
$value2 = $_GET['country']; 

$sql = "SELECT name, image_url, amazon_url, plug_type FROM adapters_list WHERE plug_type = '$value' AND country LIKE '%$value2%'" or die("Error in the consult.." . mysqli_error($link)); 

$result = $link->query($sql); 

while($row = mysqli_fetch_array($result)) { ?> 
<div id="output-product" style="border: 1px solid #333; font-family: Helvetica, sans-serif; font-size: 20px;"><?php echo $row["name"] . "<br />";?> 
<?php echo "</div>"; 

die(); 

}

+0

你確定你的'plug_search.php'文件是在wo加載的嗎? rdpress環境? – 2014-12-04 05:41:02

+0

檢查此代碼http://codex.wordpress.org/AJAX_in_Plugins – 2014-12-04 05:42:11

+0

不是100%確定你的意思是「在wordpress環境中加載」,但我正在使用wordpress網站,這兩個文件位於自定義插件文件夾中正在建設中。 – Kirill 2014-12-04 05:43:21

回答

0

數據,因爲使用的是.success代替.done

$.ajax({ 
       type: "GET", 
       url: ajaxurl, 
       data: { 
        action: 'ajax_return_search_results', 
        plug: 'country' 
       } 

      }).done(function(data){ 
        alert(data); 
       }); 
+0

更新到.done - 現在,它甚至不顯示警報窗口(這是彈出與.success) – Kirill 2014-12-04 05:47:16

0

你缺少在阿賈克斯 嘗試數據類型將它添加

$(document).ready(function(){ 
     function search(){ 
     var plug=$("#autocomplete-dynamic").val(); 
     var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>"; 
     if(plug!==""){ 
      $("#result").html(); 
      $.ajax({ 
       type: "GET", 
       url: ajaxurl, 
       dataType: 'html', 
       data: { 
        action: 'ajax_return_search_results', 
        plug: 'country' 
       }, 
       success:function(data){ 
        alert(data); 
       } 
      }); 
     } 
     } 

     $("#button").click(function(){ 
     search(); 
     }); 

     $('#search').keyup(function(e) { 
     if(e.keyCode == 13) { 
      search(); 
     } 
     }); 
    }); 
+0

添加'dataType:'html',' - 仍然返回'0' – Kirill 2014-12-04 05:57:18

2

添加該代碼在返回錯誤代碼的functions.php

add_action('wp_ajax_ajax_return_search_results', 'myajax_return_search_results'); 
add_action('wp_ajax_nopriv_ajax_return_search_results', 'myajax_return_search_results'); 

function myajax_return_search_results() { 
    echo "Success"; 
    die(); 
} 
+0

好吧,這個東西的工作,並返回「成功「。但它似乎與我在plug_search.php中的代碼完全相同。爲什麼它不能從那裏工作? – Kirill 2014-12-04 06:13:12

+0

因爲你的'plug_search.php'文件沒有被加載。在這裏粘貼你的插件主文件內容,我會告訴你如何從插件本身獲得它的工作。 – 2014-12-04 06:19:13

+0

好的,將來自plug_search.php的初始處理代碼添加到functions.php中。結果:頁面根本不加載,空白屏幕,控制檯爲空。如果我用查詢註釋掉最初的代碼,頁面就會顯示出來,所以這個函數有些問題。我會把它放在帖子本身,所以它更容易閱讀。 – Kirill 2014-12-04 06:37:17