私は、jqueryとstuffsを使用する際の初心者です。説明が不足しているか間違った用語を使用していることを私に許してください。javascript配列の応答を警告することができません
現在、私は空白のページを表示するので、私のHTMLを表示する際に問題があります。私は私のPHPをデバッグしようとしたが、そこにエラーがないようだ。私はブラウザにURLを入力しようとしたとき、私は、例えば、これを表示することができる:
[{"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"}]
ベンダーIDは、このコードを使用してテーブルに追加することによって、前のページの画像から取得さ:で
<a href='#' class='ui-img' onClick='window.location="shop.html?vendorid=" + arr[i].vendorid + ""'><img src='" + serverURL() + "/images/" + arr[i].imagefile + "' height='150'>
javascript、私は警告することができます(URL)とベンダーIDを取得します。しかし、何も出てこないので、警告(応答)でアレイを警告することはできません。しかし、私はonclick = "shop()"を試してみました。ベンダーIDを取得せずに、私のアラート(url)にはvendorid = undefinedと表示され、続いて2番目のアラートalert = []が続きます。
これは私の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>
ないこれが必要な場合は必ず..しかし、これは私のPHPです:
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();
これは、テーブルを表示するには、私のhtmlです
<?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);
?>
アラート(応答)でアレイを警告することができないのは誰も知っていますか?長い投稿には申し訳ありません。 :((
にそれらの周り
ん
"
すべてのエラーが表示されるはずですブラウザのコンソールでは、PHPには、JSONを渡すのではなく、適切に書式設定されたJSONを作成するメソッドがありますか?それらの文字列値(description 、名前など)の中に '' 'が含まれていると、手作業で動く問題が発生します –ああ、問題があります...サンプル出力を見るととても分かります... VALUE item_imageとitem_descriptionの他の文字列と同じように出力されます(JSONの手書きの意味を参照してください) –
このコードは、脆弱なショップシステムを作成する方法の完全な例です。 SQLインジェクションについてお読みください。 – Robert