Я работаю над плагином в Wordpress, в котором я храню значения в новой таблице, которая создается при активации плагинов, отлично работает.Как получить значения из цикла foreach php в jquery
Теперь я принес значение из таблицы, как следующего
<tbody>
<?php
global $wpdb;
$result = $wpdb->get_results("SELECT * FROM wp_ajc_images");
foreach ($result as $row) {
?>
<tr id="list_item">
<td width="12%">
<img src="<?php echo $row->ajc_img_path ?>" width="100">
</td>
<td width="22%">
<input type="text" class="img_link" value="<?php $row->ajc_img_link ?>" size="30">
<input type="hidden" class="ajc_field_id" value="<?php echo $row->ajc_img_id ?>">
</td>
<td width="26%">
<textarea rows="3" class="img_description"><?php $row->ajc_img_description ?></textarea>
</td>
<td width="22%">
<input type="text" class="img_title" value="<?php $row->ajc_img_title ?>" size="30">
</td>
<td width="20%">
<input type="submit" id="update" value="Update">
<button class="delete">Delete</button>
</td>
</tr>
<?php
}
?>
</tbody>
после загрузки данных я отображение значений в виде списка.
Теперь я хочу, чтобы обновить значения полей ввода и текстовое поле через AJAX, для которого я написал следующий код
add_action('wp_ajax_ajc_update_values', 'ajc_update_value');
add_action('wp_ajax_nopriv_ajc_update_values', 'ajc_update_value');
add_action("admin_head", "ajc_input_ajax");
function ajc_input_ajax()
{
?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#update").click(function() {
var id = jQuery('.ajc_field_id').val();
var update_link = jQuery('.img_link').val();
var update_desc = jQuery('.img_description').val();
var update_title = jQuery('.img_title').val();
alert(id);
var data = {
action: 'ajc_update_values',
ajc_id: id,
ajc_update_link: update_link,
ajc_update_desc: update_desc,
ajc_update_title: update_title
};
alert(data.toSource());
jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', data, function (result) {
// alert(result);
});
});
});
</script>
<?php
}
//Updating values in database
function ajc_update_value()
{
$id = $_POST['ajc_id'];
$link = $_POST['ajc_update_link'];
$desc = $_POST['ajc_update_desc'];
$title = $_POST['ajc_update_title'];
global $wpdb;
$wpdb->update(
'wp_ajc_images',
array(
'ajc_img_title' => $title,
'ajc_img_description' => $desc,
'ajc_img_link' => $link
),
array('ajc_img_id' => $id)
)
die();
return true;
}
При нажатии на кнопку обновления первого элемента он предупреждает меня правильно, например, ID. (12) и обновите его, но когда я нажимаю кнопку останова элемента обновления, он предупреждает меня о первом элементе (12), и данные не обновляются.
Надеюсь, вы поймете мой вопрос.
'var id = jQuery ('. Ajc_field_id'). Val();' вы выбираете элемент через имя класса. Вы не можете знать, какой из них будет выбран в вашем документе, потому что несколько элементов соответствуют. Фактически, это даст вам первый, который он достигнет. Это объяснение того, почему он всегда возвращает идентификатор 12. Точно так же из-за вашего цикла каждая строка будет иметь один и тот же идентификатор 'list-item', помните, что идентификатор должен быть уникальным. – TCHdvlp