2014-08-30 4 views
-1

Пожалуйста, проверьте мой код в следующем:неопределенная ошибка индекса в запросе JQuery Ajax

PHP & HTML код (file1.php):

<?php 
$conn = //connected to db successfully. 
$sql = "SELECT t1.column1 AS Column_1 FROM table1 t1"; 
$rs = mysqli_query($conn,$sql); 
$rows= mysqli_fetch_assoc($rs); 
do{ 
?> 
<button data-id="<?php echo $rows['Column_1']; ?>" type="button" onclick="handle_item('id')">Click Me</button> <br> 
<?php }while($rows = mysqli_fetch_assoc($rs)); ?> 

JQuery AJAX код (file1.php):

<script type="text/javascript"> 
    var item_id; 
    function handle_item(item_id) { 
     var c = $(this).data(item_id); 
     $.ajax({ 
      url: 'handle_input.php', 
      type: 'POST', 
      data: { 
       'button_id': c 
      }, 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    } 
</script> 

PHP код (handle_input.php):

<?php 
echo "Button with id ".$_POST['item_id]." clicked!"; 
?> 

В настоящее время проблемы (как и следовало ожидать) - печально известная ошибка в этом случае - ошибка неопределенного индекса: button_id. Я получаю его как предупреждение, когда я нажимаю на одну из кнопок. Я уже прочитал дублирующие вопросы о SO, но, к сожалению, ни один из тех, кого я читал, не смог решить мою проблему. Я ценю, что вы руководите мной этим.

Кроме того, как вы видите из моих кодов, я извлекаю несколько кнопок из базы данных, и при отображении я назначаю каждому идентификатор данных и использую этот идентификатор данных в ajax для использования в 'handle_input.php' и Я хочу получить каждый идентификатор кнопки, на который я нажал. Заранее спасибо.

UPDATE:

Это было некоторое время, так как я задал этот вопрос, но я был любопытными о чем-то мой вопрос: Почему не режим массива (данные: { «button_id» : c}) работают для меня в функции $ .ajax (что приводит к неопределенной ошибке индекса для переменной $ _POST), тогда как строковый режим (данные: «usg_id =» + c)?

+0

Пожалуйста, дайте более подробную информацию об ошибке вы получили, я имею в виду линию и файл, который вы получаете ошибка. Также вы используете 'item_id' handle_input.php, но в Ajax вы передаете button_id, пожалуйста, проверьте. – vbrmnd

+0

начните с базовой отладки в консоли браузера и, проверив запрос, 'это' не то, что вы думаете, это – charlietfl

+0

@charlietfl изменение режима данных из режима массива в «button_id = + c» разрешило мою неопределенную ошибку индекса. Кроме того, как я писал в своем последнем абзаце, я хочу получить каждый идентификатор кнопки, на который я нажимаю? Есть ли какая-либо ошибка в моей функции «this»?Потому что независимо от того, на какую кнопку я нажимаю, я получаю только оповещение кнопки id 0. Не могли бы вы предложить исправить это? – 4lisalehi

ответ

1

Вы посылаете:

button_id:.. 

но вы используете, а также с отсутствующими изменениями '

$_POST['item_id] 

к:

$_POST["button_id"] 

ОБНОВЛЕНИЕ

Добавить this в качестве первого параметра:

onclick="handle_item(this, 'id')" 

Затем измените handle_item функцию, как это:

function handle_item(obj,item_id) { 
    var c = $(obj).data(item_id); 
+0

Это моя ошибка ввода, но не ошибка в моем исходном файле. Кроме того, item_id - это моя переменная функции, но, как вы видите, я использовал handle_input ('id') для события onclick. Что-то не так с этим? – 4lisalehi

+0

Сначала я думал, что у вас возникла проблема с передачей идентификатора элемента, но поскольку вы просто запрашиваете набор данных с именем 'id''

+0

, я сделал ошибку, проверьте мои ** ОБНОВЛЕНИЕ ** – 2014-08-30 12:27:56

0
<script type="text/javascript"> 
    var item_id; 
    function handle_item(item_id) { 
     var c = $(this).data(item_id); 
     $.ajax({ 
      url: 'handle_input.php', 
      type: 'POST', 
      data:"item_id="+c, 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    } 
</script> 

В этой функции отсутствует функция button_id, следовательно, ошибка. Также в handle_input вы выборка ITEM_ID

+0

$ _POST извлекает переменную с именем, которое вы передаете данным. например key = value, тогда вы должны использовать $ _POST ['key'], чтобы получить значение. Это не имеет никакого отношения к имени переменной функции. –

+0

'item_id' - моя переменная функции, и, как вы можете видеть, я использовал' handle_input ('id) 'для события onclick, поэтому переменная' c' будет '$ (this). data ('id') ', который я считаю правильным. Не так ли? если это не так, я ценю ваше предложение об исправлении. – 4lisalehi

+0

Но значение '$ _POST ['key'] 'будет моей переменной« c »: это будет значение идентификатора данных моей нажатой кнопки. Я прав? – 4lisalehi

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