2016-11-30 10 views
0

私は、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=&quot;shop.html?vendorid=" + arr[i].vendorid + "&quot;'><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); 
    ?> 

アラート(応答)でアレイを警告することができないのは誰も知っていますか?長い投稿には申し訳ありません。 :((

+0

にそれらの周り

"item_image":kimchi fried rice.jpg, "item_description":aromatic fried rice, 

"すべてのエラーが表示されるはずですブラウザのコンソールでは、PHPには、JSONを渡すのではなく、適切に書式設定されたJSONを作成するメソッドがありますか?それらの文字列値(description 、名前など)の中に '' 'が含まれていると、手作業で動く問題が発生します –

+0

ああ、問題があります...サンプル出力を見るととても分かります... VALUE item_imageとitem_descriptionの他の文字列と同じように出力されます(JSONの手書きの意味を参照してください) –

+0

このコードは、脆弱なショップシステムを作成する方法の完全な例です。 SQLインジェクションについてお読みください。 – Robert

答えて

1

あなたが出力

[{ 
    "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" 
}] 

データのための構文強調表示を見ればあなたはすぐに問題値

+0

彼女の間違いは '$ outp。= '{"ベンダーID ":"です。 $ rs ["vendorid"]。 '、'; 'outp。=' {"vendorid": "'.outp。=' {" vendorid ":" '.outp。=' {"vendorid": "'。rs [" vendorid "]。'" ';' –

+0

よろしくお願いします!私は私のPHPで単純な引用符がこの違いを作るのか分からなかった。私は私のPHPは出力を返すことができるので、すべてが動作すると仮定した。適切にフォーマットされたJSONを使ってどういう意味が分かりますか?私の学校は手巻き法を使用しているので、私はちょうど彼らの方法に従った。 –

+0

'outp。=' {"vendorid": "'.outp。=' {" vendorid ":" '.outp。=' {"vendorid": "'。rs [" vendorid "]です。Bht、@ yanxifoo、彼に感謝するために彼の答えに「受け入れる」をクリックしてください。 –

関連する問題