Avatar billede tvilling53 Seniormester
23. april 2019 - 16:02 Der er 5 kommentarer og
1 løsning

Unchecked runtime.lasterror

Hej, hvorfor får jeg denne meddelelse "Unchecked runtime.lastError: The message port closed before a response was received." I console.log henvises til første linie på siden hvor der står  <!DOCTYPE html>.

VH Thomas V
Avatar billede Slater Ekspert
23. april 2019 - 16:34 #1
Kontekst?
Avatar billede tvilling53 Seniormester
23. april 2019 - 16:44 #2
hej
jeg skulle have dette script til at hente nogle data fra en tabel;

login_test.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
<script>
function test()
{  var obj, dbParam, xmlhttp, myObj, x, txt = "";alert('function kaldt');
    obj = { "table":"bruger", "limit":5 };
    dbParam = JSON.stringify(obj);alert(dbParam);
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {  alert('Status er = ' + status);
        if (this.readyState === 4 && this.status === 200)
        {  myObj = JSON.parse(this.responseText);
            for (x in myObj)
            {  txt += myObj[x].name + "<br>";
            }
            document.getElementById("demo").innerHTML = txt;
        }
    };
    xmlhttp.open("POST", "bruger_tabel.php", true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    alert('klar til at sende');
    xmlhttp.send("x=" + dbParam);
}   
</script>
<body>
    <button onclick="test()">test</button>
<p id="demo"></p>   
</body>
</html>

bruger_tabel.php
<?php
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli('127.0.0.1', "root", "", "api_it_dk");
if($conn->connect_error) {
exit('Could not connect');
}

$obj = json_decode($_POST['x'], false);
if(!($stmt = $conn->prepare("SELECT name FROM ? LIMIT ?")))
{  echo'<br>PREPARE mislykkedes';}
$stmt->bind_param("ss", $obj->table, $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>
scriptet er hentet fra W3school og jeg har med min begrænsede viden forsøgt at scriptet til fungere men uden held, så jeg troede at den runtime.error vat årsagen til jeg ikke kunne få det til at fungere.

Thomas V
Avatar billede olsensweb.dk Ekspert
23. april 2019 - 17:09 #3
vedr. bruger_tabel.php
hvad retunerer bruger_tabel.php ??
er du sikker på du kan have tabel og limit som parameter ?? i SELECT name FROM ? LIMIT ? under prepare statement

>scriptet er hentet fra W3school
kan du være mere præsis ?? (direkte link)

læs også
https://support.google.com/chrome/thread/2047906?hl=en
Avatar billede tvilling53 Seniormester
23. april 2019 - 17:26 #4
der returneres ikke noget fra bruger_tabel.php.

https://www.w3schools.com/js/tryit.asp?filename=tryjson_php_db_post
https://www.w3schools.com/js/js_json_php.asp nederst på siden
og med hensyn til prepare statement kunne det jo være en måde at gøre det når det nu var vist på den måde når det var med et object.

Thomas V
Avatar billede olsensweb.dk Ekspert
23. april 2019 - 17:49 #5
ref https://stackoverflow.com/questions/11312737/can-i-parameterize-the-table-name-in-a-prepared-statement
citat
But such a query can't have a table name or field name as a parameter.
...
...
One way of thinking of this is "things that can be substituted at runtime execution of the statement without altering its meaning". The table name(s) is not one of those runtime values, as it determines the validity of the SQL statement itself (ie, what column names are valid) and changing it at execution time would potentially alter whether the SQL statement was valid.
/citat
Avatar billede tvilling53 Seniormester
23. april 2019 - 18:32 #6
Mange tak for hjælpen, runtime.lastError betyder ikke noget i denne sammenhæng, jeg har i hvert fald fået løst mit problem.

Thomas V
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester