Как вставить запись строки PHP в URL AJAX - PullRequest
0 голосов
/ 19 сентября 2018

Можно ли вставить update.php?id=" . $row["id"] . " в URL AJAX?Я пытаюсь сделать асинхронное обновление строки SQL через форму.У меня нет конкретного идентификатора, потому что идентификатор вызывается по клику.

JS

  submit.on('click', function(e) {
            e.preventDefault();
            if(validate()) {
                $.ajax({
                    type: "POST",
                    url: 'update.php?id=" . $row["id"] . "',
                    data: form.serialize(),
                    dataType: "json"
                }).done(function(data) {
                    if(data.success) {
                        id.val('');
                        cas.val('');
                        info.html('Message sent!').css('color', 'green').slideDown();
                    } else {
                        info.html('Could not send mail! Sorry!').css('color', 'red').slideDown();
                    }
                });
            }
        });

PHP , где вызов update.phpрасположен

$sql3 = "
SELECT id, potnik_id, ura, naslov
FROM prevoznik 
ORDER BY HOUR(ura), MINUTE(ura) ASC;
";
$result = $conn->query($sql3);
$potnik = $row["potnik"];
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

        //Spremenjena oblika datuma
        $date = date_create($row["ura"]);
        $ura_pobiranja = date_format($date,"H:i");
        echo "<div class=\"row list  divider-gray\">
                <div class=\"col-1 fs-09 fw-600\">" . $row["id"] . " </div>
                  <div class=\"col-3 flex-vcenter-items fw-600 fs-09\">" . $row["naslov"] . " </div>
                <div class=\"col-1 flex-vcenter-items fw-600 fs-09\">$ura_pobiranja</div>
            ";

        if ($row["naslov"] !== null) {
            echo " <div class=\"col-6 flex-vcenter-items fs-1\">Nastavi uro<form id='form' action='update.php?id=" . $row["id"] . "' method='POST'><input id='id' name='potnik' value='".$row["id"]."' type='hidden' /> <input id='cas' class=\"form-control fancy-border\" type=\"text\" name=\"posodobljeni_cas\"/><input id='submit' type='submit' value='Posodobi'>    <label id=\"info\"></label></form></div>";
            echo " </div>";
        }
        else {
            echo " </div>";
        }

    }
} else {
    echo "<div class=\"col flex-vcenter-items fw-100 fs-1\"><i class=\"far fa-frown-open pr-3\"></i>Nimaš še nobenih opravil
                                    </div>";
}

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Во-первых, вы захотите исправить большую часть вашего HTML.У вас есть много повторяющихся атрибутов ID для различных элементов HTML.Это вызовет много проблем с JavaScript и неправильный синтаксис для HTML.

  $html = ""
  $id = $row['id'];
  if ($row["naslov"] !== null) {
    $html .= "<div class='col-6 flex-vcenter-items fs-1'>\r\n";
    $html .= "\tNastavi uro\r\n";
    $html .= "\t<form id='form-$id' action='update.php?id=$id' method='POST' data-id='$id'>\r\n";
    $html .= "\t\t<input id='cas-$id' class='form-control fancy-border' type='text' name='posodobljeni_cas' />\r\n";
    $html .= "\t\t<input id='submit-$id' type='submit' value='Posodobi'>    <label id='info-$id'></label>\r\n";
    $html .= "\t</form>\r\n</div>\r\n";
    $html .= "</div>";
    echo $html;
  } else {
    echo " </div>";
  }

Здесь вы можете многое увидеть.Сначала мы создаем переменные $html и $id, чтобы упростить задачу.Теперь, когда мы вводим данные String в переменную $html, если мы используем " (двойные кавычки) для переноса, мы можем просто использовать $id непосредственно в строке.Мы также будем использовать ' (одинарную кавычку) для переноса всех атрибутов HTML-элемента.

Попробуйте это для своего jQuery:

$(function(){
  $("form[id|='form']").on('submit', function(e) {
    e.preventDefault();
    var form = $(this);
    var id = form.data("id");
    var cas = $("inptu[id|='cas']", form);
    var info = $("input[id|='info']", form);
    if(validate()) {
      $.ajax({
       type: "POST",
       url: form.attr("action"),
       data: form.serialize(),
       dataType: "json"
     }).done(function(data) {
       if(data.success) {
         id.val('');
         cas.val('');
         info.html('Message sent!').css('color', 'green').slideDown();
       } else {
         info.html('Could not send mail! Sorry!').css('color', 'red').slideDown();
       }
     });
   }
 });
});

Дополнительная информация о селекторе: https://api.jquery.com/attribute-contains-prefix-selector/

Невозможно проверить это, поскольку вы не предоставили область тестирования.Надеюсь, это поможет.

0 голосов
/ 19 сентября 2018

Вы можете назначить PHP $ row ['id'];переменная к локальной переменной JS и добавьте ее к URL, как показано ниже -

submit.on('click', function(e) {
                    e.preventDefault();
                    if(validate()) {
                       var id=<?=$row['id'];?>; 
                        $.ajax({
                            type: "POST",                                
                            url: 'update.php?id='+id,
                            data: form.serialize(),
                            dataType: "json"
                        }).done(function(data) {
                            if(data.success) {
                                id.val('');
                                cas.val('');
                                info.html('Message sent!').css('color', 'green').slideDown();
                            } else {
                                info.html('Could not send mail! Sorry!').css('color', 'red').slideDown();
                            }
                        });
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...