สอบถาม jquery ในส่วนของการนำ json data ที่เป็นภาษาไทย ในการนำไปใช้งานครับ
ผมดึงข้อมูลใน DB return json_encode($ArrayData) ไป
JavaScript รับข้อมูล อยากให้อยู่ในรูปแบบ json ครับ เพราะจะเอาไปทำ AutoComplete (JQuery TokenInput Script)
[font=Verdana]คำถาม[/font]
Javascript ผมจะรับข้อมูล json data ไว้ในรูปแบบ json ได้อย่างไร โดยที่มันจะ decode ภาษาไทยกลับมาเหมือนเดิมได้ครับ
ไฟล์ json
Code (PHP)
<?php
include("config_database.php");
header ('Content-type: text/html; charset=utf-8');
$objConnect = mysql_connect($host,$user,$password) or die("Can not Connect Database");
mysql_select_db($dbname) or die("Error connecting to db.");
$sql = "SELECT public_fname,public_tel FROM public_mobile;";
mysql_query("SET NAMES UTF8");
$objQuery = mysql_query($sql) or die("Can not Execute Query " . mysql_error());
if($objQuery)
{
$json = array();
$intNumField = mysql_num_fields($objQuery);
$resultArray = array();
while($obResult = mysql_fetch_array($objQuery))
{
$arrCol = array();
for($i=0;$i<$intNumField;$i++)
{
if($i == 0)
$arrCol["name"] = $obResult[$i];
else if($i == 1)
$arrCol["id"] = $obResult[$i];
}
array_push($resultArray,$arrCol);
}
//var_dump($resultArray); <-- ข้อมูลใน Array Column name เป็นภาษาไทย
echo json_encode($resultArray);
}
mysql_close($objConnect);
?>
ไฟล์ javascript
Code (JavaScript)
$(document).ready(function() {
$.ajax({
'url': 'json_data.php',
'datatype' : 'json',
'type':'GET',
'success' : function(data)
{
var jsonData = '';
// อยากได้ข้อมูลในรูปแบบ jsonData โดยสามารถใช้งานภาษาไทยได้ครับ
// ทำอย่างไรเอ่ย ?
},
'error': function(xhr, status)
{
console.log("Ajax error status code: %d text: %s", xhr.status, xhr.statusText)
}
});
// jQuery AutoComplete ค้นหาข้อมูล ได้แต่ Eng แต่มันไม่สามารถค้นหา Data ที่เป็น ภาษาไทยได้ครับ
$("#demo-input-facebook-theme").tokenInput(
decodeURI(jsonData)
, {
theme: "facebook"
});
}
Tag : PHP, MySQL, JavaScript, Ajax, jQuery
ประวัติการแก้ไข 2012-06-11 12:02:05
Date :
2012-06-11 11:59:52
By :
LunaziA
View :
22889
Reply :
9
echo json_encode($resultArray);
มันได้เป็นค่าอะไรออกมาครับ
Date :
2012-06-11 12:34:44
By :
mr.win
var_dump ข้อมูลใน Array ก่อน json_encode ครับ
Code (PHP)
array(34)
{ [0]=> array(2) { ["name"]=> string(9) "HoneyMoon" ["id"]=> string(10) "0815579801" } [1]=> array(2) { ["name"]=> string(7) "Ekkamol" ["id"]=> string(10) "0872361725" } [2]=> array(2) { ["name"]=> string(4) "Jack" ["id"]=> string(10) "0867248727" } [3]=> array(2) { ["name"]=> string(18) "Man Chester United" ["id"]=> string(10) "0816127861" } [4]=> array(2) { ["name"]=> string(5) "Dream" ["id"]=> string(10) "0891248767" } [5]=> array(2) { ["name"]=> string(8) "Superman" ["id"]=> string(10) "0851231276" } [6]=> array(2) { ["name"]=> string(5) "Janny" ["id"]=> string(10) "0851236666" } [7]=> array(2) { ["name"]=> string(8) "Supachai" ["id"]=> string(10) "0864417734" } [8]=> array(2) { ["name"]=> string(7) "D ja ^^" ["id"]=> string(10) "0851283718" } [9]=> array(2) { ["name"]=> string(7) "IronMan" ["id"]=> string(10) "0851287361" } [10]=> array(2) { ["name"]=> string(10) "WonderGirl" ["id"]=> string(10) "0811823812" } [11]=> array(2) { ["name"]=> string(5) "T-ara" ["id"]=> string(10) "0894277985" } [12]=> array(2) { ["name"]=> string(4) "SNSD" ["id"]=> string(10) "0851263512" } [13]=> array(2) { ["name"]=> string(8) "Westlife" ["id"]=> string(10) "0861872381" } [14]=> array(2) { ["name"]=> string(13) "BackStreetBoy" ["id"]=> string(10) "0812364712" } [15]=> array(2) { ["name"]=> string(30) "นางสาวสมใจ" ["id"]=> string(10) "0851235167" } [16]=> array(2) { ["name"]=> string(27) "นายเอกราช" ["id"]=> string(10) "0898871235" } [17]=> array(2) { ["name"]=> string(30) "นางอุไทมาศ" ["id"]=> string(10) "0857712345" } [18]=> array(2) { ["name"]=> string(27) "นายสุรชัย" ["id"]=> string(10) "0841283681" } [19]=> array(2) { ["name"]=> string(39) "นางสาวล้มเก้า" ["id"]=> string(10) "0851236471" } [20]=> array(2) { ["name"]=> string(27) "นายเอกกมล" ["id"]=> string(10) "0815235123" } [21]=> array(2) { ["name"]=> string(36) "นายสมประสงค์" ["id"]=> string(10) "0851237817" } [22]=> array(2) { ["name"]=> string(24) "นายสันติ" ["id"]=> string(10) "0861238718" } [23]=> array(2) { ["name"]=> string(9) "Thanachai" ["id"]=> string(10) "0894454748" } [24]=> array(2) { ["name"]=> string(7) "Element" ["id"]=> string(10) "0879808986" } [25]=> array(2) { ["name"]=> string(24) "นายสมชาย" ["id"]=> string(10) "0874454748" } [26]=> array(2) { ["name"]=> string(6) "Steven" ["id"]=> string(10) "0858901156" } [27]=> array(2) { ["name"]=> string(4) "Bung" ["id"]=> string(10) "0854454748" } [28]=> array(2) { ["name"]=> string(4) "John" ["id"]=> string(10) "0897789012" } [29]=> array(2) { ["name"]=> string(3) "Max" ["id"]=> string(10) "0813712837" } [30]=> array(2) { ["name"]=> string(7) "PopRock" ["id"]=> string(10) "0812531253" } [31]=> array(2) { ["name"]=> string(24) "นายเกษตร" ["id"]=> string(10) "0874454748" } [32]=> array(2) { ["name"]=> string(4) "Keng" ["id"]=> string(10) "0871231412" } [33]=> array(2) { ["name"]=> string(6) "Dragon" ["id"]=> string(10) "0874454748" }
}
echo json_encode($resultArray); ครับ
จะเห็นว่า name ที่เป็นภาษาไทยโดน Encode ครับ
Code (PHP)
[{"name":"HoneyMoon","id":"0815579801"},{"name":"Ekkamol","id":"0872361725"},{"name":"Jack","id":"0867248727"},{"name":"Man Chester United","id":"0816127861"},{"name":"Dream","id":"0891248767"},{"name":"Superman","id":"0851231276"},{"name":"Janny","id":"0851236666"},{"name":"Supachai","id":"0864417734"},{"name":"D ja ^^","id":"0851283718"},{"name":"IronMan","id":"0851287361"},{"name":"WonderGirl","id":"0811823812"},{"name":"T-ara","id":"0894277985"},{"name":"SNSD","id":"0851263512"},{"name":"Westlife","id":"0861872381"},{"name":"BackStreetBoy","id":"0812364712"},{"name":"\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\u0e2a\u0e21\u0e43\u0e08","id":"0851235167"},{"name":"\u0e19\u0e32\u0e22\u0e40\u0e2d\u0e01\u0e23\u0e32\u0e0a","id":"0898871235"},{"name":"\u0e19\u0e32\u0e07\u0e2d\u0e38\u0e44\u0e17\u0e21\u0e32\u0e28","id":"0857712345"},{"name":"\u0e19\u0e32\u0e22\u0e2a\u0e38\u0e23\u0e0a\u0e31\u0e22","id":"0841283681"},{"name":"\u0e19\u0e32\u0e07\u0e2a\u0e32\u0e27\u0e25\u0e49\u0e21\u0e40\u0e01\u0e49\u0e32","id":"0851236471"},{"name":"\u0e19\u0e32\u0e22\u0e40\u0e2d\u0e01\u0e01\u0e21\u0e25","id":"0815235123"},{"name":"\u0e19\u0e32\u0e22\u0e2a\u0e21\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c","id":"0851237817"},{"name":"\u0e19\u0e32\u0e22\u0e2a\u0e31\u0e19\u0e15\u0e34","id":"0861238718"},{"name":"Thanachai","id":"0894454748"},{"name":"Element","id":"0879808986"},{"name":"\u0e19\u0e32\u0e22\u0e2a\u0e21\u0e0a\u0e32\u0e22","id":"0874454748"},{"name":"Steven","id":"0858901156"},{"name":"Bung","id":"0854454748"},{"name":"John","id":"0897789012"},{"name":"Max","id":"0813712837"},{"name":"PopRock","id":"0812531253"},{"name":"\u0e19\u0e32\u0e22\u0e40\u0e01\u0e29\u0e15\u0e23","id":"0874454748"},{"name":"Keng","id":"0871231412"},{"name":"Dragon","id":"0874454748"}]
ประวัติการแก้ไข 2012-06-11 13:50:01 2012-06-11 13:52:08
Date :
2012-06-11 13:48:38
By :
LunaziA
ผมก็รับส่งไทยได้ปกติน่ะครับ
Code (resultMySQL.php)
<?
$objConnect = mysql_connect("localhost","root","root") or die(mysql_error());
$objDB = mysql_select_db("mydatabase");
mysql_query("SET NAMES UTF8");
$strSQL = "SELECT * FROM customer WHERE 1 AND CountryCode = '".$_POST["keyword"]."' ";
$objQuery = mysql_query($strSQL) or die (mysql_error());
$intNumField = mysql_num_fields($objQuery);
$resultArray = array();
while($obResult = mysql_fetch_array($objQuery))
{
$arrCol = array();
for($i=0;$i<$intNumField;$i++)
{
$arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i];
}
array_push($resultArray,$arrCol);
}
mysql_close($objConnect);
echo json_encode($resultArray);
?>
Code (AjaxJSON.php)
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#btn1").click(function(){
$.ajax({
url: "resultMySQL.php" ,
type: "POST",
data: 'keyword=' +$("#txtCountryCode").val()
})
.success(function(result) {
$("#div1").empty();
var obj = jQuery.parseJSON(result);
$.each(obj, function(key, val) {
$("#div1").append('<hr />');
$("#div1").append('[' + key + '] ' + 'CustomerID=' + val["CustomerID"] +'<br />');
$("#div1").append('[' + key + '] ' + 'Name=' + val["Name"] +'<br />');
$("#div1").append('[' + key + '] ' + 'Email=' + val["Email"] +'<br />');
$("#div1").append('[' + key + '] ' + 'CountryCode=' + val["CountryCode"] +'<br />');
$("#div1").append('[' + key + '] ' + 'Budget=' + val["Budget"] +'<br />');
$("#div1").append('[' + key + '] ' + 'Used=' + val["Used"] +'<br />');
});
});
});
});
</script>
</head>
<body>
Search Customer (CountryCode)
<input type="text" id="txtCountryCode">
<input type="button" id="btn1" value="Search">
<div id="div1"></div>
</body>
</html>
Date :
2012-06-11 17:32:01
By :
mr.win
ขอบคุณครับพี่วิน รบกวนถามอีกหน่อยครับ
ผมอยากให้ var jsonData มีข้อมูลในรูปแบบ [{"id":"1234","name":"abcd"},{"id":"5678","name":"avfe"}, ... ]
เพื่อที่จะให้อีก Event ของ AutoComplete(TokenInput) ทำงานได้ครับ
Code (JavaScript)
<script type="text/javascript">
$(document).ready(function()
{
var jsonData;
$.ajax({
url:"json_data.php",
type: "GET",
})
.success(function(result)
{
var obj = jQuery.parseJSON(result);
jsonData = '[';
$.each(obj, function(key, val) {
jsonData += '{"name":"' + val["name"] +'","id":"' + val["id"] +'"},';
});
jsonData += '{"name":"","id":""}]';
alert(jsonData) <<< ได้ข้อมูลที่ต้องการ
});
alert(jsonData) <<< undefined
$("#demo-input-facebook-theme").tokenInput(jsonData, <<< event นำ jsonData ไป AutoComplete ครับ
{
theme: "facebook"
});
/* ตัวอย่าง
$(document).ready(function() {
$("#demo-input-facebook-theme").tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", {
preventDuplicates: true
});
});
*/
});
</script>
ประวัติการแก้ไข 2012-06-12 10:10:11
Date :
2012-06-12 10:09:45
By :
LunaziA
คือจากที่ผมลอง
คือมันไม่สามารถ Search ข้อมูลที่เป็น ภาษาไทยได้ครับ
แก้ปัญหาอย่างไรดีครับ T^T
Code (JavaScript)
$("#demo-input-facebook-theme").tokenInput("json_data.php",
{
theme: "facebook"
});
Date :
2012-06-12 10:34:46
By :
LunaziA
ถ้าใช้ jQueryลองส่งแบบ UTF-8 ไปน่ะครับ หรือใช้ data:"q="+encodeURIComponent ( query )
Date :
2012-06-12 10:38:16
By :
mr.win
หรือไม่ใน function ที่รับลองใช้พวก iconv() ช่วยครับ iconv("tis-620","utf-8",$str);
Date :
2012-06-12 10:39:58
By :
mr.win
header('Content-type: application/json;charset=utf-8');
Date :
2013-06-30 17:31:12
By :
หวาน
echo json_encode(master(), JSON_UNESCAPED_UNICODE );
Date :
2017-07-29 11:36:50
By :
wan
Load balance : Server 05