ต้องการทำไฟล์ นี้ให้เป็น rest api โดย response ออกมาเป็น Json ครับ
คำอธิบายไม่ชัดเจน ไฟล์นี้ ไฟล์ไหน ไฟล์ชื่ออะไร มีกี่ไฟล์ที่เกี่ยวข้อง แต่ละไฟล์ทำอะไรบ้าง
สิงที่ ร้องขอไป และที่ส่งมา คืออะไร รู้หรือไม่
ลองศึกษาวิธีใช้งาน browser tools ดูบ้างนะครับ มันมีเครื่องมือที่ช่วย debug โปรแกรมที่เราเขียนได้เยอะเลย
Date :
2019-07-21 05:58:15
By :
Chaidhanan
ตอบความคิดเห็นที่ : 1 เขียนโดย : prach_kp เมื่อวันที่ 2019-07-20 21:24:30
รายละเอียดของการตอบ ::
ขอบคุณครับ
จะทำอย่างไรดีครับ ให้code นี้เป็นAPI แล้วผมจะให้รับค่าผ่าน $_GET["id"] เพื่อส่งข้อมูลต่อ จากนั้นจึงแสดงค่าเป็นjson
ตอนนี้ค่าที่แสดงออกหมดทุกอย่างครับ ติดอยู่อย่างเดียวคือ มันไม่มองไฟล์ว่าเป็นืAPI เวลาจะเอาไปใช้งานต่อจึงใช้งานไม่ได้ครับ
มันฟ้องว่า
No 'Access-Control-Allow-Origin'
<!DOCTYPE html>
<html>
<body>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
output = myObj.name;
var data = '[{"data":'+ output + '}]';
document.write(data)
}
};
xmlhttp.open("GET", "demo_file.php?id= '$_GET['id'];' ", true);
xmlhttp.send();
</script>
</body>
</html>
Date :
2019-07-21 10:30:59
By :
kimhan1234
ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-07-21 11:28:15
รายละเอียดของการตอบ ::
ขอบคุณครับ แต่ก็ยังไม่ได้คำตอบอยู่ดี
ตอนนี้ที่ติดปัญหาคือ ผมจะให้ client มาเรียกไฟล์ call.php นี้ แล้วส่งข้อมูลกลับไปเป็น json ปัญหาตอนนี้คือ clientมันไม่สามรถเรียกไฟล์ call.php ได้เนื่องจากว่า ตอนเรียกจากclientมันerrorว่า No 'Access-Control-Allow-Origin' แต่ถ้าเรียกตรงๆโดยพิมพ์ url มันก้เรียกได้ปกติ ข้อมูลแสดง ไม่แน่ใจว่าอธิบายแบบนี้แล้วจะเข้าใจไหมครับ
--------------
call.php
--------------
<!DOCTYPE html>
<html>
<body>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
output = myObj.name;
var data = '[{"data":'+ output + '}]';
document.write(data)
}
};
xmlhttp.open("GET", "demo_file.php?id= '$_GET['id'];' ", true);
xmlhttp.send();
</script>
</body>
</html>
Date :
2019-07-21 11:50:25
By :
kimhan1234
ไฟล์นี้จะส่งค่ากลับไปให้ client ด้วย json แน่ใจเหรอว่า call.php เป็นไฟล์ที่จะส่ง JSON string ไปให้ client
หรือควรจะเป็นไฟล์ demo_file.php กันแน่ ตั้งสติให้ดี อย่ามั่วไปเรื่อย
--------------
call.php
--------------
<!DOCTYPE html>
<html>
<body>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
output = myObj.name;
var data = '[{"data":'+ output + '}]';
document.write(data)
}
};
xmlhttp.open("GET", "demo_file.php?id= '$_GET['id'];' ", true);
xmlhttp.send();
</script>
</body>
</html>
Date :
2019-07-21 12:12:39
By :
Chaidhanan
โอเคผมมั่ว จบข่าว รอคนอื่นก็แล้วกัน เซ็งคนโง่แล้วอวดฉลาด
Date :
2019-07-21 12:19:44
By :
Chaidhanan
มีตรงไหนที่มันบอกว่าเป็น json บ้าง ทั้งไฟล์ ส่งออกไปให้ client แล้วมันจะเป็น json ได้ยังไง
ผมให้คุณตั้งสติ เพื่อที่จะอ่านโค๊ดของตัวเอง ไม่ใช่มั่วคิดเองเออเองว่ามันถูกแล้ว ทั้งๆ ที่มันผิดอยู่
ถ้าclient เรียกมา ด้วย browser http://url/call.php มันแสดงได้ เพราะมันเป็น format html + javascript มันไม่ใช่ json
อยากได้ json ต้องเปลี่ยน code ให้แสดงเฉพาะ json เท่านั้น ยังคิดว่าใครมั่วคิดเองเออเองอยู่อีก
--------------
call.php
--------------
<!DOCTYPE html>
<html>
<body>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
output = myObj.name;
var data = '[{"data":'+ output + '}]';
document.write(data)
}
};
xmlhttp.open("GET", "demo_file.php?id= '$_GET['id'];' ", true);
xmlhttp.send();
</script>
</body>
</html>
ถ้าอยากส่งเป็น json
Code (PHP)
<?php
echo json_encode( array ที่ต้องการจะส่ง );
แค่นี้ สั้นๆ ก็ส่งเป็น json แล้ว
ก็บอกว่าคุณยังไม่เข้าใจ อะไรเลย
Date :
2019-07-21 12:40:57
By :
Chaidhanan
สีแดง เอาออกให้หมด เพราะมันเป็นส่วนเกินที่ทำให้ json parse error
--------------
call.php
--------------
<!DOCTYPE html>
<html>
<body>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
output = myObj.name;
<?php
$response = array();
echo json_encode($response[0] = array('output' => '1'));
?>
}
};
xmlhttp.open("GET", "demo_file.php?id= '$_GET['id'];' ", true);
xmlhttp.send();
</script>
</body>
</html>
Date :
2019-07-21 13:19:02
By :
Chaidhanan
ใช้ $content = file_get_contents( url ); ของ php อ่านข้อมูลมาก่อน
ไม่ใช่ส่ง html + javascript ไปให้ client
และ ไอ้ demo_file.php มันเป็นไฟล์อะไร อยู่ที่ไหน บนเซิฟเวอร์เดียวกันกับ call.php หรือเปล่า
อยากเห็นโค๊ดที่เรียกใช้ call.php มันเรียกยังไง
Date :
2019-07-21 13:31:57
By :
Chaidhanan
Load balance : Server 03