Вставка значения из Javascript в MySQL, если это возможно, через php

0

В настоящее время я разрабатываю приложение для интрасети для своей компании. В моем приложении я хотел бы получить некоторые переменные с javascript и отправить их в базу данных MySql через php.

Я знаю, что javascript - это клиентская сторона, а php - серверная, поэтому я не уверен, возможно ли передавать эти переменные.

Цель состоит в том, чтобы получить имя компьютера текущего пользователя и сохранить его в базе данных SQL всякий раз, когда они открывают сайт интрасети.

<?php
  <script type="javascript">
    var network = new ActiveXObject('WScript.network');
    <?php $pcName = "<script>document.write(network.computername)</script>";
  </script>
?>

Эта часть работает отлично. $pcName хранится в переменной php переменной $pcName и при попытке эхо-изменения переменной она отображается на узле интрасети.

$sql = "INSERT INTO t1 (pcName) VALUES ('".$pcName."')";

Но когда я вставляю его в свою таблицу sql, это значение "<script>document.write(network.computername)</script>". Я что-то пропустил? Или это так, как я предполагал, что переменная доступна на клине, а клиент только.

Теги:

3 ответа

1
Лучший ответ

Вам, вероятно, придется создавать и вызывать "API". Например, на клиенте у вас может быть что-то вроде этого:

<script type="javascript">
    var network = new ActiveXObject('WScript.network');
    var pcName = network.computername;
    fetch('storeComputer.php', {
        method: 'POST',
        credentials: 'same-origin',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            pcName: pcName
        })
    });
</script>

А затем на стороне PHP:

// storeComputer.php
$json = json_decode(file_get_contents('php://input'));
$pcName = $json['pcName'];
// do what you want with $pcName..
  • 0
    Работает как шарм. Спасибо :)
1

Да, это возможно.

Javascript может запускать любой URL с параметрами, в частности включая JSON-кодированные параметры; URL-адрес может запускать CGI-скрипт; скрипт CGI может поймать JSON и взаимодействовать с MySQl; а затем вернуть результат в javascript либо асинхронно, либо синхронно. Здесь запускается асинхронный URL-адрес:

// this is asynchronous - result comes back to callback later, while this returns immediately
 // -----------------------------------------------------------------------=======------------
 function callAjax(url, callback)
 {
    var xmlhttp;
    // compatible with IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            callback(xmlhttp.responseText);
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
 }


Здесь обратный вызов:

function cb_myCallback(theStuff)
 {
     // process theStuff here. If it JSON data, you can unpack it trivially in Javascript,
     // as I will describe later. For this example, it just text. You're going to get
     // back "hello, Ben"
     console.log(theStuff);
 }


Итак, как я могу использовать это, чтобы вызвать скрипт, который может получить доступ к базе данных:

function pyRequest(upd_data,upd_callback)
 {
 var cd_url;
    cd_url = '/cgi-bin/myPython.py?myData=' + encodeURIComponent(upd_data);
    callAjax(cd_url,upd_callback);
 }

pyRequest("Ben",cb_myCallback);


Так вот что происходит. pyRequest() создает URL-адрес, который может вызывать скрипт Python (или все, что вам нравится). callAjax() фактически выполняет вызов. Все это немедленно возвращается к вызывающему коду. Позже, когда скрипт выполнил всю свою задачу, обратный вызов в примере cb_myCallback() отправляется независимо от сценария.

Синхронный подход

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

// this is synchronous - result returns only when called script provides it
 // ------------------------------------------------------------------------
 function syncCallAjax(spdq_myData)
 {
 var remote = '__Unset__';
 var request = new XMLHttpRequest();
 var remote_url;

    remote_url = '/cgi-bin/myPython.py?myData=' + encodeURIComponent(spdq_myData);
    request.open('GET', remote_url, false);  // false makes the request synchronous
    request.send(null);

    if (request.status === 200)
    {
        remote = request.responseText;
    }
    return(remote);
 }
1

Есть много способов, но я использую jquery внутри javascript для отправки параметра в php. Его работы для меня очень хорошо

попробуй это

$('.add_item').click(function(){
    var responsecontainer=$('#responsecontainer').val();   

    var ProductName=$('#ProductTable').val();
    $.ajax({
            url:"sample.php"
            , method:"POST"
            , data: {
                ProductName: ProductName,

            }
            , success: function(result){
                // do some thing here
          }
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});
}

использование может использовать другой метод тоже.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню