Ich bin ein Neuling bei der Verwendung von jquery und stuffs so entschuldigen Sie mich für meinen Mangel an Erklärung oder für die Verwendung der falschen Begriffe.Antwort in Javascript Array kann nicht
Momentan habe ich Probleme, mein HTML anzuzeigen, da es eine leere Seite zeigt. Ich habe versucht, mein PHP zu debuggen und es scheint, als ob dort kein Fehler ist. Als ich versuchte, die URL auf Browser eingeben i kann dies beispielsweise angezeigt werden:
[{"vendorid":1,"vendor_name":"Korean stall","item_id":"1","item_name":"kimchi fried rice","item_image":kimchi fried rice.jpg,"item_description":aromatic fried rice,"price":"3.00","available":"Yes"}]
Die VendorID aus dem Bild auf der vorherige Seite genommen werden von der Tabelle angehängt mit diesem Code:
<a href='#' class='ui-img' onClick='window.location="shop.html?vendorid=" + arr[i].vendorid + ""'><img src='" + serverURL() + "/images/" + arr[i].imagefile + "' height='150'>
In Javascript, ich bin in der Lage zu alarmieren (URL) und die Vendorid zu bekommen. Aber ich kann das Array in Alarm (Warnung) nicht warnen, da nichts herauskommt. Jedoch, als ich versuchte, onclick = "shop()"; Ohne eine Vendor-ID zu erhalten, zeigt meine Warnung (URL) vendorid = undefined an, gefolgt von der zweiten Warnung alert = [].
Das ist mein javascript:
<div data-role="content" class="ui-content" id=**"itemtable"**>
<table data-role="table" data-mode="reflow" class="ui-responsive" id="homey">
<tbody id=**"mybody"**>
</tbody>
</table>
</div>
Nicht sicher, ob dies erforderlich ist .. aber das ist mein php:
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli(XXXXX);
$vendorid = $_GET['vendorid'];
$result = $conn->query("select * from menu where vendorid = '" . $vendorid . "'");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"vendorid":' . $rs["vendorid"] . ',';
$outp .= '"vendor_name":"' . $rs["vendor_name"] . '",';
$outp .= '"item_id":"' . $rs["item_id"] . '",';
$outp .= '"item_name":"' . $rs["item_name"] . '",';
$outp .= '"item_image":' . $rs["item_image"] . ',';
$outp .= '"item_description":' . $rs["item_description"] . ',';
$outp .= '"price":"' . $rs["price"] . '",';
$outp .= '"available":"' . $rs["available"] . '"}'; }
$outp .="]";
$conn->close();
echo($outp);
?>
function getShopDetails() {
var xmlhttp = new XMLHttpRequest();
var url = serverURL() + "/shop.php";
url += "?vendorid=" + decodeURIComponent(getUrlVars()["vendorid"]);
**alert(url);**
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
displayShopDetails(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function displayShopDetails(response){
var arr = JSON.parse(**response**);
**alert(response);**
var i;
$(**"#mybody"**).find("tr").remove();
for(i = 0; i < arr.length; i++) {
$(**"#mybody"**).append(
"<tr><td>" + arr[i].vendorID +
"</td><td>" + arr[i].vendor_name +
"</td><td>" + arr[i].itemname +
"</td><td>" + arr[i].price +
"</td><td>" + arr[i].item_description + "</td></tr>"
);
}
$(**"#itemtable"**).table("refresh");
}
getShopDetails();
Das ist mein html die Tabelle anzuzeigen ist
Weiß jemand, warum kann ich nicht das Array in Alert (Antwort) warnen? Entschuldigung für den langen Post. ((
Fehler: In der Browser - Konsole hat PHP auch keine Methoden, um richtig formatierten JSON für Sie zu erstellen, anstatt Sie JSON manuell zu rollen, wenn einer dieser Zeichenfolgenwerte (Beschreibung , Name usw.) haben ein '' 'in ihnen, Sie haben Probleme von Hand rollen –
Ahh, da ist das Problem ... es ist so offensichtlich, wenn Sie auf die Beispielausgabe schauen ... Sie brauchen' "' um den Wert von item_image und item_description - genau wie du es mit den anderen Strings in der Ausgabe machst (siehe was ich über handgerolltes JSON meine) –
Dieser Code ist ein perfektes Beispiel dafür, wie man ein anfälliges Shop-System erstellt. Bitte lesen Sie über SQL-Injection. – Robert