2015-04-22 5 views
1

Я пишу плагин для wordpress. Плагин имеет виджет, который содержит кнопку и текстовое поле. кнопка имеет событие onclick. Когда это событие возникает, мне нужно отправить данные текстового поля в файл php с помощью ajax , код ajax не возвращает ошибку, но php не получает данные.ошибка ajax в плагине wordpress

вот мой JS файл

function F() 
    { 
     var x=document.getElementById('last').value; 


     jQuery.ajax({ 
      type: "POST", 
      url: 'http://localhost/wordpress/wp-content/plugins/Hovo/Scripts/vote.php',   
      data: x, 
      success: function() { 
       alert('Sends successfully'); 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
      alert(errorThrown); 
      } 
     }); 
    } 

вот мой файл PHP

<?php 
    if(isset($_POST["anun"])) 
    { 
     echo $_POST['anun']; 
    } 
    else 
    { 
     echo "error"; 
    } 
?> 

пожалуйста, помогите решить эту проблему

+0

Вы уверены локального хоста? что вы используете для серверной части вашего компьютера? например, i usq mamp, и мои сайты на localhost: 8888, или на localhost: 3000 – Legendary

ответ

0

В вашем PHP $_POST ожидает пару ключ/значение, и вы отправляя только значение в вашем ajax. Где 'anun' будет ключом и все, что хранится в x, является значением.

Поскольку вы не посылаете ключ «Anun», чтобы $_POST он не может вернуть значение, хранящееся в x, потому что ваш if условие не выполняется.

Вы должны быть в состоянии исправить это, слегка изменив АЯКС вызов:

function F() { 

    var x = document.getElementById('last').value; 

    jQuery.ajax({ 
     type: "POST", 
     url: 'http://localhost/wordpress/wp-content/plugins/Hovo/Scripts/vote.php',   
     data: { anun: x }, 
     success: function() { 
      alert('Sends successfully'); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
     alert(errorThrown); 
     } 
    }); 
} 

Чтобы быть уверенным, что вы получаете правильное значение x, попробуйте использовать console.log(x); непосредственно перед Ajax вызова и проверьте консоль браузера чтобы увидеть, что он возвращает.

Если он не возвращает правильное значение, или просто ничего не возвращает, попробуйте изменить:

var x = document.getElementById('last').value; 

Чтобы просто:

x = jQuery('#last').val();