PHP ve jQuery kullanarak JSON Çıktı Array değiştirin

2 Cevap php

Şu anda jQuery Autocomplete Plugin ile çalışıyorum.

Onlar gösteri sağlanan kodu:

 <?php
 $q = strtolower($_GET["q"]);
 $items = array(
"Peter Pan"=>"peter@pan.de",
"Molly"=>"molly@yahoo.com",
 );

  $result = array();
  foreach ($items as $key) {
   if (strpos(strtolower($key), $q) !== false) {
    array_push($result, array(
        "name" => $key
      ));
     }
  }
echo json_encode($result);
 ?>

Ben çıktı benim MySQL veritabanı kendi diziyi bu kodu nasıl değiştirebileceğini bilmek istiyorum.

Ben kendi değişiklik üzerinde denedim, ama ben doğru yapıyor değilim. Bu ben çalışıyorum budur:

$q = strtolower($_GET["q"]);
$sql = "SELECT name from user_info";
require("connection.php");
 $result = mysql_db_query($DBname,$sql,$link) or die(mysql_error()); 

 $rows = array();
 while($r = mysql_fetch_assoc($result)) {
  $rows[] = $r;
foreach ($rows as $key) {
if (strpos(strtolower($key), $q) !== false) {
    array_push($result, array(
        $key
    ));
}
}
}
print json_encode($rows);

Ve bu benim jQuery / Javascript olduğunu:

    $("#email").autocomplete('emails.php', {
	multiple: false,
	dataType: "json",
	parse: function(data) {
		return $.map(data, function(row) {
			return {
				data: row,
				value: row.name,
				result: row.name
			}
		});
	},
	formatItem: function(item) {
		return format(item);
	}
}).result(function(e, item) {
	$("#content").append("<p>selected " + format(item) + "</p>");
});
});

Bunun bir sonucu olarak, Firebug aşağıdaki hata atıyor olduğunu göstermektedir:

  value is undefined

Düzgün benim sorgu kurulum alma konusunda herhangi bir yardım büyük aprpeciated olacaktır. Teşekkürler!

2 Cevap

Ben json dönüştürülmüş bir dizi kullanarak, çünkü bu oluştuğunu düşünüyorum, o zaman jquery sonucu çok nasıl bir dizi kullanmak gerekir. Ya biçiminde, json kullanmadan bir json dize yapabilirsiniz: '[{"name": "ahmet", "y": 2009}, {"name": "tom", "y": 2000},. ..] '.

Sizin jquery gayet iyi. Birkaç saat sonra ben bu hatayı tetikleyerek 'format' işlevi biçimlendirme olduğunu öğrendim.

Size kaynak koduna bakarsanız

http://jquery.bassistance.de/autocomplete/demo/json.html

Aşağıdaki, görünüşte önemsiz işlevi görürsünüz

function format(mail) {
    return mail.name + " &lt;" + mail.to + "&gt";
}

Temsilciliklerine 'daha büyük' ​​'daha az' ve dışarıda bırakarak iseniz, o zaman muhtemelen alıyoruz

value is undefinded

İlk kayıttan sonra hata konsolda üzerinden çevrilir. Bazı garip nedenle az ve semboller daha büyük önem taşımaktadır. Eğer biçim işlevi onları tutmak emin olun.