อยากรู้วิธีการใช้ ajax ดึงค่าจาก array ในหน้าเดียวกันครับ จากเดิมมี2หน้าอยากเอามารวมกันส่งในหน้าเดียว
คำถามไม่กระจ่าง อ่านแล้วงง
จะส่งอะไร 2 หน้า หรือ 2 url หรืออะไรแน่ครับ
Date :
2019-05-16 10:50:04
By :
Chaidhanan
ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-05-16 10:50:04
รายละเอียดของการตอบ ::
ตอนนี้คือผมมีโคตอยู่2หน้าครับ แบบด้านล่างนี้ครับ แต่ต้องการเอามารวมกันหน้าเดียว จะต้องทำยังไงเพราะมีการใช้ ajax ดึงค่าจาก array อีกหน้า
หน้าแรก.php
Code (PHP)
<?php
$host = "host = xxxx";
$port = "port = xxx";
$dbname = "dbname = xxxx";
$credentials = "user = xxxx password=xxx";
$query = pg_connect( "$host $port $dbname $credentials" );
$query = "SELECT * FROM data WHERE product ='xxx' and created_at between 'xxx' and 'xxx' ";
$result = pg_query($query);
$arr2 = array();
while($row = pg_fetch_array($result))
{
$data = json_decode($row['data']);
if(isset($data->latitude)){
$arr = array();
$arr["latitude"] = $data->latitude;
$arr["longitude"] = $data->longitude;
$arr["id"] = $data->id;
array_push($arr2,$arr);
}
}
function Json_Super_Unique($array,$key){
$temp_array = array();
foreach ($array as &$v) {
if (!isset($temp_array[$v[$key]]))
$temp_array[$v[$key]] =& $v;
}
$array = array_values($temp_array);
return $array;
}
$api= Json_Super_Unique($arr2, 'id');
echo json_encode($api);
pg_close();
?>
หน้า2.html
Code (HTML)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>ECU Google Map API</title>
<!-- <meta http-equiv="refresh" content="15"> -->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=initMap"></script>
<script type="text/javascript" src="jquery-1.11.2.min.js"></script>
<script language="JavaScript">
var map;
var infowindow;
function setupMap() {
var myOptions = {
zoom: 5,
center: new google.maps.LatLng(13.725647, 100.605628),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(
document.getElementById("map_canvas"),
myOptions
);
infowindow = new google.maps.InfoWindow();
selectLocation();
}
var makers = [];
function selectLocation() {
$.ajax({
type: "POS",
url: "หน้าแรก.php" //ตรงนี้ครับจะต้องทำยังไง
}).done(function(text) {
var json = $.parseJSON(text);
for (var i = 0; i < json.length; i++) {
var latitude = json[i].latitude;
var longitude = json[i].longitude;
var id = json[i].id;
var latitudelongitude = new google.maps.LatLng(latitude, longitude);
if (car == 1) {
var makeroption = {
map: map,
icon: "icon1.png",
html:
"<B>API DATA</B><br>" +
"ID : " +
id +
"<br>" +
"Product : " +
product +
"<br>" +
"Date/Time : " +
created_at +
"<br>" +
"Car : " +
car,
position: latitudelongitude
};
}else{
var makeroption = {
map: map,
icon: "icon2.png",
html:
"<B>API DATA</B><br>" +
"ID : " + id + "<br>" +
"Product : " + product +"<br>" +
"Date/Time : " + created_at +"<br>" +
"Car : " + car,
position: latitudelongitude
};
}
var marker = new google.maps.Marker(makeroption);
google.maps.event.addListener(marker, "click", function(e) {
infowindow.setContent(this.html);
infowindow.open(map, this);
});
}
});
}
</script>
</head>
<div class="center">
<body onload="setupMap()">
<div id="map_canvas" style="width:100%;height:70%;"></div>
</div>
</body>
</html>
ประวัติการแก้ไข 2019-05-16 11:52:00 2019-05-16 11:57:23
Date :
2019-05-16 11:51:31
By :
nuithestd
echo json_encode($api); บันทัดนี้ คือการส่ง จาก php;
ส่วน html javascript
$.ajax({
type: "POS",
url: "หน้าแรก.php" //ตรงนี้ครับจะต้องทำยังไง
}).done(function(text ) {
สีแดง ค่าที่รรับ
text จะ เท่ากับ json_encode($api);
var json = $.parseJSON(text); แปลงค่า text ให้อยู่ในรูป object เพื่อใช้อ้างอิงได้ง่ายๆ
ผมก็ยังไม่รู้อยู่ดีว่าคุณต้องการอะไรแน่ คงต้องรอท่านอื่นล่ะครับ ที่อาจจะเข้าใจที่คุณต้องการ
Date :
2019-05-16 12:03:07
By :
Chaidhanan
ผมดูแล้วก็เห็นว่ามีแค่หน้าหนึ่งใช้ js ดึงค่าผ่าน ajax ไปยังหน้าที่เป็น php ตามปกติเหมือนที่เขาทำกันทั่วไป แล้วมันยังไง?
จะเอามารวมหน้าเดียว? ก็เอาส่วน php ไว้บน แล้วใช้ if ครอบเอาว่าถ้ามีการเรียกแบบ HTTP_X_REQUESTED_WITH ก็ค่อย echo ออกมาเสร็จแล้วก็ exit() ไปเลย
แบบนี้ก็อยู่ในหน้าเดียวกันได้
Date :
2019-05-17 00:18:44
By :
mr.v
Load balance : Server 02