0

jqueryダイアログでいくつかのmysqlデータを表示しようとしていますが、これは次のコードを使用しているときにうまく機能します:

クエリ:

 $con = mysql_connect($host,$user,$pass);
  $dbs = mysql_select_db($databaseName, $con);

  //--------------------------------------------------------------------------
  // 2) Query database for data
  //--------------------------------------------------------------------------
  $result = mysql_query("SELECT * FROM $tableName");          //query
  $array = mysql_fetch_row($result);                          //fetch result    

  //--------------------------------------------------------------------------
  // 3) echo result as json 
  //--------------------------------------------------------------------------
  echo json_encode($array);

出力:

 $(function () 
  {
    //-----------------------------------------------------------------------
    // 2) Send a http request with AJAX http://api.jquery.com/jQuery.ajax/
    //-----------------------------------------------------------------------
    $.ajax({                                      
      url: 'api.php',                  //the script to call to get data          
      data: "",                        //you can insert url argumnets here to pass to api.php
                                       //for example "id=5&parent=6"
      dataType: 'json',                //data format      
      success: function(data)          //on recieve of reply
      {
        var URL = data[3];              //get id
        var approved = data[4];           //get name

        //--------------------------------------------------------------------
        // 3) Update html content
        //--------------------------------------------------------------------
        $('#output').html("<b>URL: </b>"+URL+"<b>  Status: </b>"+approved); //Set output element html
        //recommend reading up on jquery selectors they are awesome 
        // http://api.jquery.com/category/selectors/
      } 
    });
  }); 

これを使用すると、結果として次のようになります。

["1","peter","test.com","yes"]

これは機能しますが、表示したいエントリが複数あるため、次のようにしています。

      $result = mysql_query("SELECT * FROM $tableName WHERE username='$username'");            //query
  while($array = mysql_fetch_array($result))
  {echo json_encode($array);
  } 

次の結果が得られます。

    {"0":"1","id":"1","1":"peter","username":"peter","2":"test.com","URL":"test.com","3":"yes","approved":"yes"}
{"0":"2","id":"2","1":"peter","username":"peter","2":"tessst.com","URL":"tessst.com","3":"yes","approved":"yes"}

何故ですか ?行名も取得しますか(そのようです)?

これを機能させるにはどうすればよいですか / 出力が機能するように同じ形式で取得する必要がありますか?

4

1 に答える 1

0

(mysql_fetch_row($result) の代わりに) mysql_fetch_array($result) の結果には、キーとインデックスの両方を介してアクセス可能なデータがあります (data["id"]=data[0]、data["name"]=data[1] など) ...)。

また、無効な JSON 文字列をデコーダーに渡します。これは、区切り文字も囲みもなしでいくつかの有効な文字列をエコーすることによって ([{...},{...} の代わりに {...}{...}{...}) ,{...}])

于 2012-12-28T12:06:52.023 に答える