2014-12-04 4 views
1

Есть довольно много похожих проблем, которые я мог найти, но ничего не помогло, поэтому я должен опубликовать собственную версию этого вопроса.Wordpress Ajax возвращает '0'

У меня есть 2 PHP файлы:

  • playing.php (содержит веб-форму и отправляет Аякса вызов)
  • 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? –

+0

проверить это http://codex.wordpress.org/AJAX_in_Plugins –

+0

Не 100% уверены, что вы подразумеваете под «загрузкой в ​​среде WordPress», но я работаю с веб-сайтом Wordpress, и эти два файла находятся в пользовательской папке плагина I я строю. – Kirill

ответ

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

0

У вас не хватает типа данных в Ajax Попробуйте добавить его

$(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',' - still returns '0' – Kirill

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

+0

Не загружается ваш файл 'plug_search.php'. Вставьте содержимое основного файла плагинов здесь, и я расскажу вам, как вы можете заставить его работать с самим плагином. –

+0

Итак, добавьте исходный код обработки из plug_search.php в functions.php. Результат: страница не загружается вообще, пустой экран, пустая пустая. Если я прокомментирую этот исходный код с запросом, страницы появятся, поэтому с этой функцией что-то не так. Я положу это в сам пост, так что его легче читать. – Kirill

Смежные вопросы