Выполнение скрипта PHP с возвратом полученных данных в многострочной таблице без перезагрузки
В общем есть таблица в которой может быть тысячи строк. каждая строка это товар из моей базы данных, и данные могут быть не актуальны. Мне необходимо чтобы в строке нажимая на кнопку я мог подключить свой парсер и вывести актуальную цену и остатки на этот товар. С PHP проблем нет. Проблема у меня с JavaScript или Jquery, я их только осваиваю по мере необходимости и в них не селен. Раньше все подключал, но не было необходимости работать с сотнями идентификаторов. Через Jquery мне необходимо передать переменную в сторонний скрипт при нажатии на кнопку обновить, и получить данные в этой же строке без перезагрузки страницы и так для каждого в отдельности товара который мне необходим. Как мне это сделать можете подсказать?
Вот HTML с PHP
<td id='controls'>$s </td>
<td align='left' style='text-align: left;' width='250px'><a href='$goodst[link]' target='_blank'>$goodst[name]</a></td>
<td align='left' style='text-align: left;' width='150px'><a href='images/$goodst[articul]' target='_blank'>
<img class='hover' src='images/$goodst[articul]/$goodst[articul]_0.jpg' width='150px'>
</a>
</td>
<td align='left' style='text-align: left;'>Арт.внутр: $goodst[articul]<br>Арт.техн: $goodst[articultech]</td>
<td align='left' style='text-align: left;'>
<input name='but' value='$goodst[id]' type='hidden' class='button'><br/><br/>
<input type='submit' value='Отправить'>
<div class='content'></div>
$goodst[price] руб.
</td>
<td align='left' style='text-align: left;'>$goodst[nalichie] шт.</td>
<td align='left' style='text-align: left;'>$goodst[dostavka] дн.</td>
Вот джава
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js">
<script type="text/javascript">
$(document).ready(function(){
$('#myForm').submit(function(){
$.ajax({
type: "POST",
url: "action.php",
data: "text",
success: function(html){
$(".content").html(html);
}
});
return false;
});
});
</script>```
Проверял множество скриптов с разных источников, многие выводят данные только для первой строки либо вообще ничего не работает.
Ответы (1 шт):
Каждой строке с данными присвойте свой id состоящий из некоего ключевого слова и номера записи в таблице БД. Например
<tr id="good_1344"><td>...<td><td>...</td><td><input type="button" name="sendBtn" value="Отправить"/></td></tr>
Далее в момент нажатия кнопки c помощью javascript считываете этот id. Отрезаете от него ключевое слово и передаете оставшийся номер записи php-скрипту через ajax-запрос.
$(document).ready(function(){
$('button[name=sendBtn]').on('click', function(){
var row_id = $(this).parent().parent().attr('id');
var id = row_id.split('_')[1];
$.ajax({
type: 'POST',
url: 'action.php',
data: 'id='+id,
error: function(req, text, error) {
alert('Произошла ошибка получения данных!');
},
success: function (data) {
},
datatype: 'json',
async: true
});
});
});
В блоке
...
success: function (data) {
}
...
пишите обработчик полученных данных от php-скрипта. После чего заменяете ими в нужных <td> данные на свои.
Например:
...
success: function (data) {
//проверяем, что нам пришел массив данных и он не пустой
if ( $.isArray( data ) && data.length > 0 ) {
//Предположим, что php нам всегда возвращает массив из 1-го элемента
//внутри которого еще один массив с полями `id`, `name`
//тогда `id` мы положим в первую `<td>`, а `name` во вторую
$('#'+row_id).children('td:eq(0)').html( data[0]['id'] );
$('#'+row_id).children('td:eq(1)').html( data[0]['name'] );
}
...
Думаю отдачу данных из php-скрипта Вы осилите сами :)
Надеюсь мой ответ Вам хоть чем-то поможет. Удачи в программировании!
P.S Писал на скорую руку - в коде вполне могут быть ошибки.